環境
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;"