LoginSignup
1
4

More than 5 years have passed since last update.

Docker構築備忘録

Posted at

環境

windows10
Docker 17.09.0
docker-compose 1.16.1

やりたいこと

dockerでWEBサーバとDBサーバとメールサーバを構築する
開発環境として利用するのでデータは永続化したい

docker-compose.yml
version: '2'

services:
  mail:
    # メールサーバ
    image: djfarrelly/maildev
    ports:
      - "1080:80"
      - "25:25"
    expose:
      - "80"
      - "25"
  db:
    image: mysql:5.7
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    volumes:
      # ホストOSのディレクトリをゲストOSにマウントする
      # macでの速度改善のためにcachedを入れる
      - ${HOST_OS_DIR}/.data:/var/lib/mysql:cached
      # docker起動時に投入したいDDLやDMLを以下に置く
      - ./db/init:/docker-entrypoint-initdb.d
      # sql_modeをカスタマイズしている
      - ./db/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
    environment:
      MYSQL_ROOT_PASSWORD: "xxx"
      MYSQL_DATABASE: "xxxx"
      MYSQL_USER: "xxx"
      MYSQL_PASSWORD: "xxx"
      MYSQL_HOST: "xxx"
      TZ: "Asia/Tokyo"
      # 任意のパスをホストOSの環境変数に設定する
      # このディレクトリ配下に永続化するデータが置かれる
      HOST_OS_DIR:
    ports:
      - "3307:3306"
    restart: always
  web:
    # Dockerfileを用意する
    build: ./web
    ports:
      - "80:80"
      - "443:443"
    expose:
      - "80"
      - "9000"
    environment:
      TZ: "Asia/Tokyo"
      # 環境を識別する変数
      APPLICATION_ENV: "development"
      HOST_OS_DIR:
    volumes:
      # カスタムしたい設定ファイルはホストOSに作ったファイルで上書き
      - ./web/php.ini:/etc/php.ini
      - ./web/15-xdebug.ini:/etc/php.d/15-xdebug.ini
      - ./web/httpd.conf:/etc/httpd/conf/httpd.conf
      - ./web/ssl.conf:/etc/httpd/conf.d/ssl.conf
      - ./web/vhosts.conf:/etc/httpd/conf.d/vhosts.conf
      - ./web/mysqld.sock:/etc/mysqld.sock
    restart: always
    # docker起動時に必要なコマンドを記述
    command: > 
      bash -c "
        composer install --prefer-dist;
        npm install;
        npm install -g gulp;
        gulp install;
        apachectl -DFOREGROUND;"
1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4