英文:
Comment out docker-compose block with bash script
问题
我正在为本地开发制作一个使用Docker化应用的项目。我的公司有3个不同的域名,每个域名都有一个包含5个服务的docker-compose文件(共15个项目)。
如果我的项目用户只想部署他们域名下的一个服务,或者其他域名下的两个项目,我就需要在其他docker-compose文件中注释掉不需要部署的服务。
所以我的问题是,如何使用bash脚本注释掉docker-compose(Go)文件中的代码块?我希望能够根据上下文选择要注释的行。例如,在下面的示例中,我想注释掉ap2-php-fpm部分。我不能使用临时解决方案,因为还会有更多的项目进来。我必须使用bash脚本来修改Go语言脚本。
演示:
version: '3.3'
services:
app-php-fpm:
container_name: app
build:
context: ${src}/
volumes:
- $path:path
networks:
general-nt:
aliases:
- app
expose:
- "9000"
ap2-php-fpm:
container_name: app
build:
context: ${src}/
volumes:
- $path:path
networks:
general-nt:
aliases:
- app
expose:
- "9000"
networks:
general-nt:
external: true
我希望使用bash脚本将该文件修改为以下内容:
version: '3.3'
services:
app-php-fpm:
container_name: app
build:
context: ${src}/
volumes:
- $path:path
networks:
general-nt:
aliases:
- app
expose:
- "9000"
# ap2-php-fpm:
# container_name: app
# build:
# context: ${src}/
# volumes:
# - $path:path
# networks:
# general-nt:
# aliases:
# - app
# expose:
# - "9000"
networks:
general-nt:
external: true
英文:
I am making a project for local development with dockerized apps. I have 3 different domain on my company that each domain has one docker-compose file with 5 services. (15 projects)
If User of my project wants to deploy only 1 service of their domain or/and 2 of the other domains projects, I have to comment out services in other docker-compose files that dont want to be deployed.
So my question is How can i comment out docker-compose(Go) files block with bash script? I want to choose the lines with their context. For example in below example i want to comment out ap2-php-fpm section. I cant make a work around solution because more projects incoming. I have to intervene go language script with bash script.
Demonstration
version: '3.3'
services:
app-php-fpm:
container_name: app
build:
context: ${src}/
volumes:
- $path:path
networks:
general-nt:
aliases:
- app
expose:
- "9000"
ap2-php-fpm:
container_name: app
build:
context: ${src}/
volumes:
- $path:path
networks:
general-nt:
aliases:
- app
expose:
- "9000"
networks:
general-nt:
external: true
I want to make this file as below with bash script.
version: '3.3'
services:
app-php-fpm:
container_name: app
build:
context: ${src}/
volumes:
- $path:path
networks:
general-nt:
aliases:
- app
expose:
- "9000"
# ap2-php-fpm:
# container_name: app
# build:
# context: ${src}/
# volumes:
# - $path:path
# networks:
# general-nt:
# aliases:
# - app
# expose:
# - "9000"
networks:
general-nt:
external: true
答案1
得分: 0
对于许多实际用途来说,只需使用特定的服务名称运行 docker-compose up
可能已经足够了。如果你运行以下命令:
docker-compose up -d app-php-fpm
它将启动命令行上的服务以及它所依赖的任何其他服务,但不会启动其他服务。这样就避免了需要注释掉 YAML 文件的部分内容的需要。你可以以正常方式与容器进行交互。
英文:
For many practical purposes, it may be enough to run docker-compose up
with specific service names. If you run
docker-compose up -d app-php-fpm
it will start the service(s) on the command line, and anything it depends_on:
, but not anything else. That would avoid the need to comment out parts of the YAML file. You could otherwise interact with the containers normally.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论