Meh*_*van 12 development-environment docker microservices docker-compose
我们正在使用微服务方法来构建我们的产品.我们正在使用一些项目,每个项目都使用docker-compose来运行.问题是在开发环境中,如果我们想要更改多个项目中的代码并测试已开发的代码,我们必须单独运行项目并手动将它们链接在一起.
现在我们要创建一个开发工具包,它可以克隆项目并将它们一起运行并处理链接.docker-compose可以处理多个docker-compose文件吗?如果没有,有没有足够的工具为我们这样做?或者我们的目标是否有任何推荐的方法?
编辑:例如我们有两个项目:PROJECT_A和PROJECT_B.每个都有自己的docker-compose.yml,每个都需要postgresql来运行.我们在PROJECT_A中有docker-compose.yml,如下所示:
db:
image: postgres:9.4
ports:
- "5432"
project_a:
build: .
command: python2.7 main.py
links:
- db
Run Code Online (Sandbox Code Playgroud)
我们在PROJECT_B中有docker-compose.yml,如下所示:
db:
image: postgres:9.4
ports:
- "5432"
project_b:
build: .
command: python2.7 main.py
links:
- db
Run Code Online (Sandbox Code Playgroud)
每个项目都可以单独运行并且运行正常.但是如果我们想要改变PROJECT_A和PROJECT_B之间的api,我们需要运行这两个项目并将它们链接在一起来测试我们的代码.现在我们要编写一个开发工具包项目,该项目可以运行这两个项目并在需要时链接它们.这样做的最佳方法是什么?
您可以使用以下extends功能组合来自多个文件的服务docker-compose.将项目放在一个定义明确的位置,并使用相对路径引用它们:
../
??? foo/
? ??? docker-compose.yml
??? bar/
??? docker-compose.yml
Run Code Online (Sandbox Code Playgroud)
base:
build: .
foo:
extends:
service: base
links:
- db
db:
image: postgres:9
Run Code Online (Sandbox Code Playgroud)
如果你想自己测试这个项目,你会做类似的事情:
sudo docker-compose up -d foo
Run Code Online (Sandbox Code Playgroud)
创建foo_foo_1
foo:
extends:
file: ../foo/docker-compose.yml
service: base
links:
- db
bar:
build: .
extends:
service: base
links:
- db
- foo
db:
image: postgres:9
Run Code Online (Sandbox Code Playgroud)
现在,您可以测试两种服务:
sudo docker-compose up -d bar
Run Code Online (Sandbox Code Playgroud)
创建bar_foo_1
创建bar_bar_1
我对你的问题不是 100% 确定,所以这将是一个广泛的答案。
1)如果所有内容都在同一台计算机或服务器集群上运行,则所有内容都可以位于同一个撰写文件中。
#proxy
haproxy:
image: haproxy:latest
ports:
- 80:80
#setup 1
ubuntu_1:
image: ubuntu
links:
- db_1:mysql
ports:
- 80
db1:
image: ubuntu
environment:
MYSQL_ROOT_PASSWORD: 123
#setup 2
ubuntu_2:
image: ubuntu
links:
- db_2:mysql
ports:
- 80
db2:
image: ubuntu
environment:
MYSQL_ROOT_PASSWORD: 123
Run Code Online (Sandbox Code Playgroud)
也可以组合多个 yml 文件,例如
$docker-compose -f [File A].yml -f [File B].yml up -d
2)构建中的每个容器都可以通过compose单独控制。
$docker-compose stop/start/build/ ubuntu_1
3) 使用$docker-compose build它只会在已完成更改的地方进行重建。
以下是可能有用的更多信息 https://docs.docker.com/compose/extends/#extending-services
如果以上都不正确,请提供构建示例。
| 归档时间: |
|
| 查看次数: |
11229 次 |
| 最近记录: |