cwe*_*ske 21 docker docker-compose
我想在同一台服务器上运行多个项目使用MySQL docker容器.
使用docker-compose v3文件,我只是在每个项目中都有相同的mysql容器配置,它们具有相同的container_name:
version: "3"
services:
app1:
image: foo
links:
- mysql
mysql:
image: mysql/mysql:5.7
container_name: shared_mysql
Run Code Online (Sandbox Code Playgroud)
第二个应用程序有一个类似的docker-compose.yml文件,但app2代替app1.
运行docker-compose up --no-recreate时app2,我收到一个错误:
Creating shared_mysql ... error
ERROR: for shared_mysql
Cannot create container for service mysql: Conflict.
The container name "/shared_mysql" is already in use by container "deadbeef".
You have to remove (or rename) that container to be able to reuse that name.
Run Code Online (Sandbox Code Playgroud)
如何在多个docker项目之间共享MySQL容器?
whi*_*s11 14
您可以简单地避免在两个docker-compose.yml文件之一中重新定义mysql,并将mysql和其他容器连接到同一网络.
为此,请创建一个网络:
docker network create shared
Run Code Online (Sandbox Code Playgroud)
将您的网络分配给您的mysql容器:
version: '3'
services:
mysql:
...
networks:
- shared
networks:
shared:
external:
name: shared
Run Code Online (Sandbox Code Playgroud)
对于需要访问mysql的任何其他容器,只需添加与上面相同的网络定义:
version: '3'
services:
app1:
...
networks:
- shared
app2:
...
networks:
- shared
...
networks:
shared:
external:
name: shared
Run Code Online (Sandbox Code Playgroud)
如果您的容器仅由其他撰写文件创建,则可以使用docker-compose中的外部链接功能。
如果您希望两个docker compose文件都能够创建mysql容器,建议您研究一下文件和项目之间的Share Compose配置。在这种情况下,您可以创建一个仅定义mysql的基本文件,并在两个应用程序的组合文件中对其进行扩展/合并。
| 归档时间: |
|
| 查看次数: |
7612 次 |
| 最近记录: |