1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MySQLのdocker-compose最小構成設定

Posted at

MySQLのdocker-compose最小構成設定

  • docker-compose.yml
docker-compose.yml
services:
  db:
    image: mysql:latest
    volumes:
      - ./db/datadir: /var/lib/mysql
      - ./db/backups: /data/backups
    env_file:
      - project.env
    ports:
      - 3306:3306
  #app:
    # ...
  • project.env
project.env
MYSQL_ROOT_PASSWORD="password"
MYSQL_DATABASE="dbname"
TZ="Asia/Tokyo"

ディレクトリ構成

  • Dockerfileはオプション
./projectdir
    docker-compose.yml
    project.env
    db/ #ビルド時に生成
        datadir/ #ビルド時に生成
        backups/ #ビルド時に生成
    # app/
    # Dockerfile

ビルド

  • docker-compose.ymlと同じディレクトリで実行
docker-compose up -d

アクセス

  • ホストからコンテナのmysqlにログイン
mysql -u root -p -h 127.0.0.1 -P 3306
  • ホストからコンテナ内に入り、コンテナ内でmysqlにログイン
docker exec -it ContainarName bash
mysql -u root -p 

参考

前提

  • 2024/04 版
  • 必要最低限のとりあえず動く設定を作る
  • ベストプラクティスを目指す
  • 環境
    • WSL2+Ubuntuの構成
    • DockerDesktopを使用
  • 運用
    • ホストのhomeディレクトリから各用途に合わせてプロジェクト用のディレクトリを作り、各プロジェクト内でDockerfile、docker-compose.ymlを管理する
    • docker-compose.ymlはGitで管理して開発者間でビルド情報を共有する
    • 公式Dockerイメージ(Dockerfile)には可能な限り変更は加えない
      • DBに変更を加えたい場合はデータマウントを活用する
      • やむを得ずDockerfileに変更を加える場合は作成したDockerイメージをDockerHubで管理する

docker-compose.ymlレシピ

サービス名をつける

services:
    db:
    # app: 

imageまたはbuildを選択

image

  • DockerHubのイメージを直接使う場合に記載(Dockerfileを使用しない)
services:
    db:
        image: mysql:5.7

build

  • Dockerfileを使用する場合に使用、Dockerfileの相対パスを指定
services:
    db:
        build: ./projectdir

volumeの形式を選択

  • ボリュームを使うとデータはDockerコンテナの起動・停止のサイクルから独立してホストマシンとデータを共有・管理できる

volumes(サービス内)

services:
    db:
      volumes:
          - ./db/datadir: /var/lib/mysql

volumes(トップレベル)

  • コンテナ間でボリュームを共有したい場合に使用する
  • Dockerの管理下/var/lib/docker/volumesでストレージ領域を確保される
services:
    volumes:
    - db_data: /var/lib/mysql
volumes: 
  db_data:
  • マウントポイントはコマンドで確認できる
docker volume ls
docker volume inspect [volume name]

環境変数を設定する

  • .envファイルでコンテナ内で使用する環境変数を書いてインポートできる
    • パスワードなど共有したくない情報はローカルで管理する
services:
    db:
        env_file:
          - project.env

ポート指定

  • ホスト→コンテナへポートフォワードの設定ができる
  • ホストマシンのポート番号:コンテナのポート番号
services:
    db:
        ports: 
            - "3000:3000"

依存関係(option)

  • 起動順序をつけたいとき
# 例:db起動後にappから接続したい場合
services:
    app:
        depends_on: 
             - db

version(option)

  • 古いバージョンを指定したいときに使う
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?