データベースコンテナの作成
MySQLデータベースコンテナを作成します。
ディレクトリとファイルを作成します。
mkdir -p docker/db
mkdir -p docker/db/conf.d
mkdir -p docker/db/data
touch docker/db/conf.d/my.conf
touch docker/.env.dev
1[mysqld]
2character_set_server=utf8mb4
3collation_server=utf8mb4_bin
4default_time_zone=SYSTEM
5log_timestamps=SYSTEM
6default_authentication_plugin=caching_sha2_password
7[mysql]
8default_character_set=utf8mb4
9[client]
10default_character_set=utf8mb4
1TZ='Asia/Tokyo'
2MYSQL_DATABASE=mysite
3MYSQL_USER=django
4MYSQL_ROOT_PASSWORD=root
5MYSQL_PASSWORD=django
6SECRET_KEY=django
7DEBUG=True
docker-compose.dev.yml
に11-20行目を追加します。
1version: '3.9'
2services:
3 app:
4 container_name: django
5 build:
6 dockerfile: ./docker/app/Dockerfile
7 ports:
8 - 8000:8000
9 env_file: ./docker/.env.dev
10 command: poetry run python manage.py runserver 0.0.0.0:8000
11 db:
12 container_name: mysql
13 image: mysql:8
14 volumes:
15 - ./docker/db/data:/var/lib/mysql
16 - ./docker/db/conf.d:/etc/mysql/conf.d
17 env_file: ./docker/.env.dev
18 ports:
19 - "3306:3306"
20 privileged: true
データベースのコンテナを起動します。
docker compose -f docker-compose.dev.yml up -d db
コンテナが起動していることを確認します。
docker compose -f docker-compose.dev.yml ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
mysql mysql:8 "docker-entrypoint.s…" db 6 minutes ago Up 6 minutes (healthy) 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
ログにエラーがないことを確認します。
docker compose -f docker-compose.dev.yml logs
MySQLのデータベースに接続できることを確認します。
docker compose -f docker-compose.dev.yml exec db mysqladmin ping -h 127.0.0.1 -uroot -p
コンテナを終了します。
docker compose -f docker-compose.dev.yml down