docker-compose - 让 docker-compose up 只运行某些容器
问题描述
所以我目前可以使用“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 test
只运行postgres。虽然我希望能够运行我的应用程序而不必运行我的测试容器。
编辑
感谢@ideam 提供链接
我能够创建一个额外的 yaml 文件来进行测试。对于那些不想查找的人,只需像这样创建一个新的 yaml 文件
docker-compose.dev.yml
将 dev 替换为你喜欢的任何东西,除了 override 这会导致 docker-compose up 自动运行,除非另有说明
要运行新文件,只需调用
docker-compose -f docker-compose.dev.yml up
-f 是用于选择要运行的某个文件的标志。您可以运行多个文件以设置不同的环境
感谢帮助
解决方案
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,然后是后端,然后是前端,它会忽略测试容器,这不是运行前端所必需的。
推荐阅读
- c++ - 我的复制构造函数没有被调用
- javascript - PrimeNG 确认对话框无法点击,锁屏
- angular - 如何在 Angular 6 中使用 take(1)?
- c++ - 宏的逆柯里化?
- google-cloud-firestore - Firestore - 删除文档而不先阅读
- ios - 如何使用 NSAttributedString 自动调整文本大小
- php - 开发人员过渡到 Drupal/Wordpress
- java - RecyclerView 不显示来自 firestore 的任何数据
- python - 如何在 Python 3.x 中从 0 舍入?
- php - 从Python重写到PHP,加密,现在区别在哪里?