この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
戻るリンク
Docker Cmposeで複数コンテナ管理①(ハンズオン)
https://cloud5.jp/docker-cmpose-1/
docker compose用ファイル
①環境変数ファイル
./docker/.env
# DB用環境変数(MySQL)
DB_HOST_NAME=mydb
DB_NAME=testdb
DB_USER=test
DB_PASS=test1234
DB_TZ=Asia/Tokyo
DB_PORT=3306
# app用環境変数(nodejs)
APP_NODE_ENV=development
②DockerCmoposeファイル
./docker/docker-compose
version: "3"
services:
db:
env_file: .env
restart: always
image: mysql:5.7
container_name: ${DB_HOST_NAME}
volumes:
# 初期データを投入するSQLが格納されているdir
- ./mysql/initdb:/docker-entrypoint-initdb.d
# 永続化するときにマウントするdir
- ./mysql/datadir:/var/lib/mysql
# db設定
- ./mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
# ログ
- ./mysql/logs:/var/log/mysql
ports:
- ${DB_PORT}:3306
environment:
- MYSQL_USER=${DB_USER}
- MYSQL_PASSWORD=${DB_PASS}
- MYSQL_ROOT_PASSWORD=${DB_PASS}
- TZ=${DB_TZ}
app:
build:
context: ./node
dockerfile: Dockerfile
container_name: myapp
environment:
- MYSQL_HOST=${DB_HOST_NAME}
- MYSQL_USER=${DB_USER}
- MYSQL_PASS=${DB_PASS}
- MYSQL_DB=${DB_NAME}
volumes:
- ./node/myapp/src:/usr/src/app/src
ports:
- "30001:8005"
Dockercomposeファイル説明
1:全体
1 :vesion:
docker-composeで使用するバージョンを定義しています。
2~4 :services:
Docker-Composeでは、アプリケーションを動かすための各要素をServiceと読んでいます。そのため、ComposeFileにも、serviceとして、それぞれのServicesの内容をネストさせて記述していきます。
2:DB部分
1:service名
2:システム的な環境変数定義ファイル(./docker/.envへ参照)
3:コンテナを自動起動オプション
4:イメージファイル
5:コンテナID(サンプルではnodejsからMySQLへアクセスする際にコンテナIDがホスト名として使用するために、環境変数にしました)
6~10:コンテナにホストボリュームをマウントする設定。
11:ポート指定
12:環境変数の定義
3:App部分
1:service名
2~4:構築時に適用するオプションを指定します。build で指定できるのは、構築用コンテクストのパスを含む文字列だけでなく、 context の配下にある特定の物(オブジェクト)や、 dockerfile のオプションと 引数 を指定できます。
5:コンテナID
6:環境変数の定義
7:コンテナにホストボリュームをマウントする設定。
8:ポート指定
docker-compose起動確認
1.事前確認
# dockerフォルダに移動
cd docker
# フォルダ階層確認
tree ./ -a
# docker イメージとコンテナ確認
docker ps -a
docker images
2.docker-compose起動
#
#起動コマンド
![](https://cloud5.jp/wp-content/uploads/2021/03/CleanShot-2021-03-31-at-22.12.06@2x-640x293.jpg)
##起動したコンテナの停止と削除
#docker-compose down
3.起動後の確認
# データ永続化確認
ls -l ./mysql/datadir
# 初期データ確認
docker exec -it mydb bsha -p
mysql -utest -ptest1234
select * from testdb.user;
# docker イメージとコンテナ確認
docker images
docker ps -a
nodejs画面確認
注意点
- docker-compose コマンド自動する前に、docker-composeファイルの格納フォルダに移動するのは前提条件となります。
docker-composeファイルフォルダに移動しない場合は"-f" オプションを付けてください。
例:docker-compose -f docker/docker-compose.yml up -d –build - docker-composeファイルを変更した場合、docker-compose up の"–build" オプションを付けないと、変更内容が反映されない。
参考資料
docker-compose.ymlの書き方
https://knowledge.sakura.ad.jp/16862/
docker-compose downとstopの違い
https://qiita.com/yusuke_mrmt/items/e05d7914065824384a6b