我正试图通过下面的命令使用下面的配置docker-compose.yaml文件部署一个带有停靠群的堆栈:
docker stack deploy --with-registry-auth -c docker-compose.yaml projectversion: "3.9"
services:
mysql:
image: mysql:8.0
deploy:
replicas: 1
volumes:
- mysql_data:/var/lib/mysql
networks:
- internal
ports:
- 3306:3306
environment:
MYSQL_ROOT_HOST: '%'
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: project_production
MYSQL_USER: username
MYSQL_PASSWORD: password
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.13.4
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- internal
website:
image: registry.gitlab.com/project/project-website:latest
networks:
- internal
deploy:
replicas: 1
ports:
- 3000:3000
environment:
- RAILS_ENV=production
- MYSQL_HOST=mysql
- ES_HOST=http://es01
- project_DATABASE_USERNAME=root
- project_DATABASE_PASSWORD=root
depends_on:
- es01
- mysql
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
mysql_data:
networks:
internal:
external: true
name: project在部署堆栈之前,我还通过以下命令为项目创建了网络:
docker network create -d overlay project但是,当我使用project命令看到docker logs日志时,我看到下面的错误停止了我的project get启动:
Mysql2::Error: Host '10.0.2.202' is not allowed to connect to this MySQL server我完全按照文件的建议去做,我不知道我所提出的设置有什么问题!
问题:
如何在码头群中从project连接到mysql容器?
发布于 2021-11-04 19:00:33
基于文档,Docker会自动为您创建覆盖网络。因此,我认为默认情况下不需要创建外部网络,除非您有特定的需求:
当您初始化一个集群或将一个码头主机加入到一个现有的群集时,将在该码头主机上创建两个新的网络:
的其他守护进程。
正如Chris在注释中提到的,DB凭据也不匹配。
可选:只有当您想以root用户的身份进行连接时才需要root,这在生产环境中是不推荐的。也不需要向主机公开端口,因为数据库服务只能在集群内部使用。因此,如果仍然希望使用根用户,可以将变量设置为只允许来自集群内部的连接,如MYSQL_ROOT_HOST=10.*.*.*。
https://stackoverflow.com/questions/69822573
复制相似问题