" />
本ページはプロモーションが含まれています。

スポンサーリンク

Docker

dockerのAdminerでMySQLに接続する

docker-compose.yml

version: "3.8"
services:
  db:
    container_name: okozukai-db
    image: mysql:8
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_DATABASE: okozukai
      MYSQL_USER: okozukaiadmin
      MYSQL_PASSWORD: xxxxx
      MYSQL_ROOT_PASSWORD: rootpassword
    platform: linux/x86_64
    expose:
      - 3306
    ports:
      - 3306:3306
    volumes:
      - mysql_db:/var/lib/
    networks:
      okozukai-network:
  adminer:
    container_name: okozukai-adminer
    image: adminer
    restart: always
    depends_on:
      - db
    ports:
      - 8090:8080
    networks:
      okozukai-network:
volumes:
  mysql_db:
      driver: local
networks:
  okozukai-network:

基本的には、dockerhubのMySQLの解説に沿ってdocker-compose.ymlを記述します。

その後、
docker-compose up -d
でコンテナを起動します。

29行目...ホストの8090ポートを、コンテナの8080ポート(=adminerの使用ポート)に接続します。

ブラウザでadminerにアクセス

docker-compose.ymlでホストの8090ポートをadminer使用ポートに接続したので、ブラウザでhttp://localhost:8090/にアクセスします。

すると、adminerのログインページが開きます。

サーバ...MySQLコンテナのサービス名を指定します。(localhostではありません)
ユーザ名...MySQLコンテナのMYSQL_USERの値です。
パスワード...MySQLコンテナのMYSQL_PASSWORDの値です。
データベース...MySQLコンテナのMYSQL_DATABASEの値です。

入力して、ログインを押すと、テーブルとビューが表示されます。

エラー SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name does not resolve

このエラー、または「SQLSTATE[HY000] [2002] No such file or directory」と出た場合は、サーバの入力値が誤っている可能性があります。

サーバは、MySQLのserivce名になります。
本記事のdocker-compose.ymlでは3行目で「db」と記述しているので、サーバは「db」になります。

スポンサーリンク

-Docker