首页 > 解决方案 > 使用客户端连接到 docker 网络中的 mysql

问题描述

我正在使用 docker swarm 创建一个具有不同 wordpress 实例的小型基础设施,我有一个入口(nginx)和不同的堆栈(wp、mysql、wp)。每个堆栈的 docker-compose 如下所示:

version: "3.7"

networks:
  foo-frontend:
  foo-backend:

volumes:
  db_data:
  wordpress_data:

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    env_file:
      - db.env
    networks:
      - foo-backend
    ports:
      - "3306:3306"

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html/wp-content
    env_file:
      - wp.env
    networks:
      - foo-frontend
      - foo-backend

  nginx:
    depends_on:
      - wordpress
    image: nginx:latest
    volumes:
      - ./nginx:/etc/nginx/conf.d
      - /etc/letsencrypt:/etc/letsencrypt
    networks:
      - foo-frontend

而入口是:

version: "3.7"

services:
  nginx:
    image: nginx:latest
    ports:
      - 80:80
      - 443:443
    volumes:
      - ~/docker-vps/ingress/conf.d:/etc/nginx/conf.d
      - /etc/letsencrypt:/etc/letsencrypt
    networks:
      - foo-frontend

networks:
  frontend:
    external: true

我的问题是我无法使用客户端连接到 mysql,我尝试使用具有正确端口的容器 ip 但无法正常工作....有没有办法使用客户端连接到 mysql?

非常感谢

标签: mysqldockerclient

解决方案


将服务名称视为主机名。这就是服务通信的方式。所以,数据库的主机名是db. 让我知道发生的错误消息,因为我没有评级来评论您的原始问题以了解这一点。


推荐阅读