J. *_*ein 6 mysql containers docker docker-compose
我正在尝试添加名为“mysql”depends_on的外部MySQL 容器(我不想为此堆栈创建新的 mysql 容器;我想使用现有容器)。
到目前为止,我的代码如下所示:
version: '2'
services:
wordpress:
image: wordpress:latest
hostname: mia
restart: unless-stopped
ports:
- 80
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_USER: "mia"
WORDPRESS_DB_PASSWORD: "12345"
WORDPRESS_DB_NAME: "mia"
volumes:
- /f/Sites/mia:/var/www/html
depends_on:
- mysql
networks:
- occms
- ocdb
mysql:
name: mysql
networks:
occms:
external:
name: cms
ocdb:
external:
name: db
Run Code Online (Sandbox Code Playgroud)
有人知道解决方案吗?
BMi*_*tch 11
该depends_on指令仅适用于同一撰写项目中的服务。如果您将这些文件合并到同一个项目中,它们可能位于不同的文件中,例如
docker-compose -f compose-app.yaml -f compose-db.yaml up
Run Code Online (Sandbox Code Playgroud)
否则,我建议将启动依赖项从组合中移出并移至应用程序的入口点中。常见的示例是wait-for-it.sh,它允许您拥有一个执行以下操作的入口点脚本:
#!/bin/sh
# delay for mysql startup using wait-for-it for up to 5 minutes
wait-for-it.sh -h mysql -p 3306 -t 300
# call the original wordpress entrypoint script with any args
exec docker-entrypoint.sh "$@"
Run Code Online (Sandbox Code Playgroud)
听起来您想通过另一个 Compose 堆栈来管理 MySQL 容器。
所以选项一:检查外部链接是否适合您: Docker-compose external_links 无法连接
另一种选择是通过主机网络堆栈将其全部连接:
在当前堆栈中,需要更改这部分
WORDPRESS_DB_HOST: mysql:3306
Run Code Online (Sandbox Code Playgroud)
作为概念证明,替换mysql为 MySQL 容器的 IP 地址并删除任何 dependent_on。
另一方面,您应该确保当MySQL容器启动时,容器端口链接到主机端口。所以两者是通过主机堆栈进行通信的。此外,mysql第二步还可以配置主机名。