所以我目前可以使用“ docker-compose up test”,它仅运行我的数据库和测试脚本。我想让我们说“ docker-compose up app”或类似的东西可以运行除测试之外的其他方式。这样,我不会运行不必要的容器。我不确定是否有办法,但这就是我想知道的。如果可能,我很感谢某些已经完成的链接,我可以找出其余的链接。基本上,我只能使用一个命令运行某些容器,而不必运行其他命令。
Yaml
version: '3'
services:
webapp:
build: ./literate-app
command: nodemon -e vue,js,css start.js
depends_on:
- postgres
links:
- postgres
environment:
- DB_HOST=postgres
ports:
- "3000:3000"
networks:
- literate-net
server:
build: ./readability-server
command: nodemon -L --inspect=0.0.0.0:5555 server.js
networks:
- literate-net
redis_db:
image: redis:alpine
networks:
- literate-net
postgres:
restart: 'always'
#image: 'bitnami/postgresql:latest'
volumes:
- /bitnami
ports:
- "5432:5432"
networks:
- literate-net
environment:
- "FILLA_DB_USER=my_user"
- "FILLA_DB_PASSWORD=password123"
- "FILLA_DB_DATABASE=my_database"
- "POSTGRES_PASSWORD=password123"
build: './database-creation'
test:
image: node:latest
build: ./test
working_dir: /literate-app/test
volumes:
- .:/literate-app
command:
npm run mocha
networks:
- literate-net
depends_on:
- postgres
environment:
- DB_HOST=postgres
networks:
literate-net:
driver: bridge
我可以运行docker-compose up测试
仅运行postgres。尽管我希望能够只运行我的应用程序而不必运行我的测试容器。
编辑
感谢@ideam提供的链接
我能够创建其他yaml文件以进行测试。 对于那些不想查找的人,只需像这样创建一个新的Yaml文件
docker-compose.dev.yml
用覆盖范围之外的任意内容替换dev,除非另行指定,否则docker-compose up会自动运行
要运行新文件,只需调用
docker-compose -f docker-compose.dev.yml up
-f是用于选择要运行的文件的标志。您可以运行多个文件以设置不同的环境
感谢帮助
答案 0 :(得分:2)
docker-compose up <service_name>
将仅启动您指定的服务及其依赖项。 (在dependends_on
选项中指定的选项。)
您还可以在docker-compose up命令中定义多个服务:
docker-compose up <service_name> <service_name>
说明-“启动服务及其依赖关系”是什么意思?
通常,您的生产服务(容器)通过dependes_on
链彼此连接,因此,您只能启动链中的最后一个容器。例如,使用以下撰写文件:
version: '3.7'
services:
frontend:
image: efrat19/vuejs
ports:
- "80:8080"
depends_on:
- backend
backend:
image: nginx:alpine
depends_on:
- fpm
fpm:
image: php:7.2
testing:
image: hze∂ƒxhbd
depends_on:
- frontend
所有服务都链接在depends_on
选项中,而测试容器位于前端下方。因此,当您点击docker-compose up frontend
时,docker将首先运行fpm,然后运行后端,然后运行前端,它将忽略测试容器,而运行前端不是必需的。
答案 1 :(得分:1)
也许您想共享docker-compose.yml
以获得比这更好的答案。
要重用docker-compose配置,请查看https://docs.docker.com/compose/extends/#example-use-case,其中解释了多个配置文件的组合,以便针对不同用例(测试,生产等)重用配置。
答案 2 :(得分:1)
从 docker-compose
1.28.0 开始,新的 service profiles 就是为此而生的!使用 profiles
,您可以将服务标记为仅在特定配置文件中启动:
services:
webapp:
# ...
server:
# ...
redis_db:
# ...
postgres:
# ...
test:
profiles: ["test"]
# ...
docker-compose up # start only your app services
docker-compose --profile test up # start app and test services
docker-compose run test # run test service