簡體   English   中英

無法連接到MySQL MySQL docker容器中的服務?

[英]Cannot connect to MySQL service in MySQL docker container?

所以,我有一個 MySQL docker 容器,我在上面運行腳本寫入數據庫,但是當我執行腳本時,我的腳本拋出

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

必須要在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

首先,您需要公開 MySQL 端口3306或您為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

使用此示例代碼,您將能夠使用localhost:30001從主機連接到您的數據庫,並從同一網絡中的其他容器連接到mysql_test:3306

如果你想在你的主機上執行腳本,你需要導出端口 3306

version: '3.3'

services:
  db:
    build: .
    restart: always
    environment: 
      MYSQL_ROOT_PASSWORD: test
      MYSQL_DATABASE: test
      MYSQL_USER: test
      MYSQL_PASSWORD: test
    ports:
      - 3306:3306
    volumes: 
      - ./db_data:/docker-entrypoint-initdb.d

如果您嘗試在 docker 內部執行(例如使用 docker exec),請檢查容器是否已啟動docker ps

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM