✨
[Docker]DBを共有している2つのサービスを設定するyml🍕
今回やりたかったこと
1つのDBを共有する、2つのサービス(Webサイト画面と、そのWebサイトの管理画面)をローカル環境構築する。
2つのサービスについて
・Webサイトとその管理画面には、共有ディレクトリを持っている
・設定内容はドキュメントルート以外同じ
docker-compose.ymlの設定
サービスを2つ立てる場合に、docker-compose.ymlで変更する設定条件
・サービス名
・コンテナ名(同じコンテナ名は使用することはできない)
・port番号(同じポート番号を設定していると同時にブラウザ表示できない)
・ドキュメントルート(Dcokrefileにも指定するが、ymlにも書かないとうまくいかなかった)
services:
php-1: #サービス名
image: php:7.4.29-apache
build: ./dockerfiles/www #Dockerfileの場所(ここのDockerfileにもドキュメントルートの設定をする)
container_name: php-1 #コンテナ名:他のコンテナに同じ名前をつけることはできない
volumes:
- ./var/www/html:/var/www/html
ports:
- 8080:80
# 8080 → http://localhost:8080/でローカルでサイトを開くことができる。
depends_on:
- db
environment:
- APACHE_DOCUMENT_ROOT=/var/www/html/ww #ドキュメントルートの設定
php-2:
image: php:7.4.29-apache
build: ./dockerfiles/admin
container_name: php-2
volumes:
- ./var/www/html:/var/www/html
ports:
- 8081:80
# もう一つのPHPコンテナとは違うポート番号にする → http://localhost:8081/でローカルでサイトを開くことができる。
depends_on:
- db
environment:
- APACHE_DOCUMENT_ROOT=/var/www/html/admin #ドキュメントルートの設定
db:
image: mysql:8.0.29
container_name: mydatabase
platform: linux/amd64
environment:
TZ: Asia/Tokyo
MYSQL_HOST: localhost
MYSQL_ROOT_PASSWORD: ××××1234
MYSQL_DATABASE: my-database
ports:
- 3306:3306
volumes:
- ./mysql/:/docker-entrypoint-initdb.d/
command: |
mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci &&
mysqld --innodb_use_native_aio=0
Discussion