Docker docker-compose.yml LAMP Laravel
ディレクトリ構成
公開ディレクトリ
└.db-host-data
└conf MySQLコンテナにマッピングする設定ディレクトリ。custom.cnfが追加で設定される
└custom.cnf
└data 永続化するDBファイルをマッピングする為のディレクトリ
└initdb.d コンテナ作成時に実行するSQLファイルをマッピングする為のディレクトリ
└init1.sql
└init2.sql
└.web-host-data Laravelソースコードをマッピングする為のディレクトリ
Laravelのソースファイル
└docker
└web
└apache
└000-default.conf apacheコンテナにコピーするapache設定ファイル
└php
└php.ini apacheコンテナにコピーするphp設定ファイル
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.3-apache
# mod_rewriteを 有効に
RUN a2enmod rewrite
COPY ./php/php.ini /usr/local/etc/php/
COPY ./apache/*.conf /etc/apache2/sites-enabled/
RUN apt-get update \
&& apt-get install -y libzip-dev zlib1g-dev libpq-dev default-mysql-client unzip vim \
&& docker-php-ext-install zip pdo_mysql mysqli \
&& docker-php-ext-enable mysqli
COPY --
from=composer:latest /usr/bin/composer /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
WORKDIR /var/www/html
EXPOSE 80