Docker docker-compose.yml LAMP CakePHP3
ディレクトリ構成
公開ディレクトリ
└.db-host-data
└conf MySQLコンテナにマッピングする設定ディレクトリ。custom.cnfが追加で設定される
└custom.cnf
└db 永続化するDBファイルをマッピングする為のディレクトリ
└initdb.d コンテナ作成時に実行するSQLファイルをマッピングする為のディレクトリ
└init1.sql
└init2.sql
└.web-host-data CakePHP3ソースコードをマッピングする為のディレクトリ
CakePHP3のソースファイル
└docker
└web
└Dockerfile docker-composeから呼び出されるApacheコンテナ作成の為のDockerfile
└docker-compose.yml
docker-compose.yml
version: ‘3’
services:
web:
Apacheコンテナ作成用のDockerfileを指定
build: ./docker/web
container_name: web-host
volumes:
ローカルのソースコードをApacheの公開ディレクトリとマッピング
- ./.web-host-data:/var/www/html
ports:
- 80:80
privileged: true
restart: always
db:
image: mysql:8.0.20
container_name: db-host
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: limited
MYSQL_USER: docker
MYSQL_PASSWORD: docker
TZ: ‘Asia/Tokyo’
command: mysqld
--
character-set-server=utf8mb4
--
collation-server=utf8mb4_unicode_ci
--
innodb-use-native-aio=0
--
default-authentication-plugin=mysql_native_password
volumes:
DBのデータをローカルとマッピング。永続化(コンテナを終了してもDBのデータが残る)される
- ./.db-host-data/db:/var/lib/mysql
DBの設定ファイルをローカルとマッピング。.db-host-data/conf配下の設定が有効化される
- ./.db-host-data/conf:/etc/mysql/conf.d
コンテナ作成時の実行スクリプトを指定。.db-host-data/initdb.d配下のsqlファイルが自動実行される
- ./.db-host-data/initdb.d:/docker-entrypoint-initdb.d
ports:
- 3306:3306
restart: always
phpmyadmin:
container_name: phpmyadmin
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOSTS=db-host
- PMA_USER=root
- PMA_PASSWORD=root
ports:
- 8080:80
Dockerfile
FROM php:7.2-apache
RUN apt-get update && apt-get install -y –no-install-recommends \
nano \
libicu-dev \
vim \
&& rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install intl \
&& docker-php-ext-install pdo_mysql \
&& pecl install xdebug \
&& docker-php-ext-enable xdebug
EXPOSE 80