LoginSignup
1
0

DockerでMySQLとDB管理ツールのAdminer or phpMyAdminを実行する

Last updated at Posted at 2023-12-03

DockerでMySQLとDB管理ツールのAdminerを実行する

docker-compose.ymlを作成

version: '3.8'

services:
  mysql:
    image: mysql
    restart: always
    ports:
      - 33306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=mysql
      - MYSQL_DATABASE=test_db
      - MYSQL_USER=user
      - MYSQL_PASSWORD=password
    command: ['--default-time-zone=+09:00']
    volumes:
      - ./mysql-data:/var/lib/mysql
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
    depends_on:
      - mysql

DB管理にAdminerではなくphpMyAdminを使用したい場合は「adminer」を下記に書き換える

  phpmyadmin:
    image: phpmyadmin
    restart: always
    ports:
      - 80:80
    depends_on:
      - mysql
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOSTS=mysql
      - PMA_PORT=3306
      - PMA_USER=root
      - PMA_PASSWORD=mysql

起動コマンド

docker-compose up -d

停止コマンド

docker-compose down

Adminerへのアクセス

http://localhost:8080へアクセスすると下記画面が表示される

image.png

ログインすると下記画面が表示される
タイトルなし.jpg

コンテナへのアクセスについて

  • ローカルからのアクセス先は「localhost」になる

コンテナのポートについて

  • ポートは「ローカルの転送元:Dockerへの転送先」になる
    • DockerのサービスAとサービスBのポートが被っている場合は、下記のようにポートを設定しておけばそれぞれのサービスに転送される
      • サービスAのポート:10080:80
      • サービスAのポート:10081:80

コンテナ間の連携について

  • コンテナ間の連携はdocker-compose.ymlに記載されたサービス名でアクセスが可能になる
    • adminerサービスからはmysqlサービスへは「mysql:3306」でアクセスする

データの永続化

  • mysqlサービスのvolumesを指定していない場合、停止するたびにDBのデータが初期化される
  • volumesの指定は「ローカルの保存先フォルダ:Dockerの保存元フォルダ」になるため、ローカルの「mysql-data」にmysqlのDBデータが保存される

イメージのバージョン指定

  • 「mysql」のバージョンを指定したい場合、「mysql:8.0」のように指定する

「restart」とは?

  • 「always」指定でコンテナでエラーが発生した場合に自動で再起動する

「depends_on」とは?

  • 起動順序を指定する
    • adminerサービスに「depends_on: - mysql」が指定されているのでmysql→adminerの順で起動される
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