【发布时间】:2021-11-28 19:12:35
【问题描述】:
我正在使用 dockerized 应用程序进行本地开发项目。我的公司有 3 个不同的域,每个域都有一个包含 5 个服务的 docker-compose 文件。 (15 个项目)
如果我的项目的用户只想部署其域的 1 个服务或/和其他域项目的 2 个,我必须注释掉其他不想部署的 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
【问题讨论】:
-
这个论坛有很多重复,但是如果需要就地编辑,这里
printf '%s\n' '/ap2-php-fpm:/;/^$/-1s/^/# /' %p Q | ed -s file.txt将Q更改为w。 -
你的用户
docker-compose up app-php-fpm,只指定他们想要运行的服务就够了吗? -
反之,如果你同时有新旧版本,可以分配不同的端口吗?如果 v2 成功,这也可能有助于切断实时流量。
-
@DavidMaze 如果我能做我想做的事,我会使用另一种方法。我的 bash 脚本生成命令。有很多项目,命令长度会很大
-
@DavidMaze 这不是我的问题答案,但我决定用你的方式解决。我正在从配置文件中读取项目服务名称。我添加了一个新值来检查它是否要部署。你能发布你的答案吗?我会接受的。
标签: bash docker go docker-compose