LoginSignup
0
1

More than 1 year has passed since last update.

立ち上げたMySQLコンテナにログインできない時の対処方法

Last updated at Posted at 2023-01-29

状況

webというrubyのimageを元にして作られたコンテナからdbというMySQLのコンテナにmysql -u root -pのコマンドを試したところ

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")

となってログインできなかった。

環境

version: '3'

volumes:
  db-data:

services:
  web:
    build: .
    ports:
      - '3000:3000'
    volumes:
      - '.:/opt'
    environment:
      - DB_USER=root
      - DB_NAME=${DB_NAME}
      - DB_PASSWORD=${DB_PASSWORD}
      - DB_HOST=db
    tty: true
    stdin_open: true
    depends_on:
      - db
    links:
      - db

  db:
    image: mysql:5.7
    restart: always
    volumes:
      - 'db-data:/var/lib/mysql'
    environment:
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    ports:
      - "3306:3306"

解決策

webdbのコンテナが違うIPアドレスで起動していた。その為-hオプションでhostを指定する。

コンテナのIPアドレスを表示
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
結果
/rails-docker-mysql_web_1 - 172.30.0.3
/rails-docker-mysql_db_1 - 172.30.0.2

以下のコマンドでMySQLにログインできた

mysql -h 172.30.0.2 -P 3306 --protocol=tcp -u root -p

参考にした記事

追記

dbのサービス名でアクセス出来ます。

docker compose run --rm db bash -c "mysql -u root -p -h db"
0
1
2

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
0
1