我有一个docker-compose.yml
,它可以启动2个服务(我从中遗漏了所有不相关的数据)。
app:
build:
context: .
dockerfile: ./docker/app/Dockerfile
image: ...
container_name: app-${ENV}
depends_on:
- db
expose:
- 80
db:
image: ...
container_name: my-cool-db
ports:
- "3306:3306"
在这里看到的要点是app
正在根据参数获取容器名称。所以基本上我有一个运行以下命令的shell脚本:
ENV=$1 docker-compose -p $1 up -d
简而言之,无论我转发什么参数,都应该启动新的应用程序容器。例如,如果我做sh initializer.sh first
,我将得到app-first
容器。指定了-p
参数,这样我就可以将同一容器的多个实例归类为不同的项目。
如果我只有一个容器,效果很好,最后我会说:
app-first
app-second
app-third
我想要实现的是让所有容器使用相同的数据库。但是当我执行docker-compose
时,我的数据库容器仍然希望独立于他的存在而被启动。
试图用不同的项目名称创建一个具有相同容器名称的数据库是否会导致冲突?
可以在不启动2个单独的数据库容器的情况下进行此操作吗?
答案 0 :(得分:1)
hacky解决方案:
将撰写文件更改为
var colorsDataEl = $('.colors-data');
var colorsData = colorsDataEl.sassToJs({pseudoEl:":before", cssProperty: "content"});
colorsDataEl.html(JSON.stringify(colorsData));
然后首先创建网络services:
app:
image: ...
container_name: app-${ENV}
networks:
- shared
expose:
- 80
db:
image: ...
container_name: my-cool-db
networks:
- shared
ports:
- "3306:3306"
networks:
shared:
external: true
调出数据库:docker network create shared
第一个应用程序:docker-compose up -d db
第二个应用:ENV=first docker-compose -p first up -d app