无法连接到 MySQL docker 容器中的 MySQL 服务?

jke*_*raa -1 mysql mysql-python docker dockerfile docker-compose

所以,我有一个 MySQL docker 容器,我在上面运行一个脚本来写入数据库,但是当我执行脚本时,我的脚本抛出

mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
Run Code Online (Sandbox Code Playgroud)

我是否必须在 Dockerfile 中启动 MySQL 服务?

docker-compose.yml:

version: '3.3'

services:
  db:
    build: .
    restart: always
    environment: 
      MYSQL_ROOT_PASSWORD: test
      MYSQL_DATABASE: test
      MYSQL_USER: test
      MYSQL_PASSWORD: test
    volumes: 
      - ./db_data:/docker-entrypoint-initdb.d
Run Code Online (Sandbox Code Playgroud)

Moh*_*ani 5

首先,您需要公开 MySQL 端口3306或您为 MySQL 设置的任何其他端口,然后您可以从commmand参数中获得帮助。

一个工作样本是这样的:

version: '3.1'

services:

  db:
    image: mysql
    container_name: mysql_test
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: test
      MYSQL_USER: test_user
      MYSQL_PASSWORD: test_password
    ports:
      - 30001:3306
    expose:
      - 30001
    volumes:
      - my-db:/var/lib/mysql
    networks:
      - test

networks:
  test:

volumes:
  my-db:
    driver: local

Run Code Online (Sandbox Code Playgroud)

使用此示例代码,您将能够localhost:30001从主机和mysql_test:3306同一网络中的其他容器连接到您的数据库。