我想通过对接构建图像-组成并设置特定的标记。文档说:Compose将使用生成的名称构建和标记该图像,并在此后使用该图像。但我找不到一种方法来指定标记,对于构建的图像,我总是看到“最新”标记。
niwlg2el1#
看起来docs/tool已经更新了,你现在可以在你的脚本中添加image标签了。示例:
image
version: '2' services: baggins.api.rest: image: my.image.name:rc2 build: context: ../.. dockerfile: app/Docker/Dockerfile.release ports: ...
https://docs.docker.com/compose/compose-file/#build
waxmsbnn2#
原始答案 * 2015年11月20日 *:目前还没有针对特定标签的选项。Docker compose只是像你所看到的那样发挥它的魔力并分配一个标签。你可以在调用Docker compose之后让一些脚本调用docker tag <image> <tag>。现在有一个如上所述的选项
docker tag <image> <tag>
build: ./dir image: webapp:tag
ccrfmcuu3#
我想补充的是,您还可以通过环境变量或.env文件来管理标记版本。https://docs.docker.com/compose/environment-variables/#the-env-fileexport TAG=1.11示例:
export TAG=1.11
version: '3.3' services: baggins.api.rest: image: my.image.name:${TAG} build: context: ../.. dockerfile: app/Docker/Dockerfile.release ports: ...
要验证的docker-compose config在我的ci流水线中,我的第一个构建被标记为一个用于运行测试的一次性值,然后我把标记改为latest,并在推送到注册表之前再次重建(几乎是即时的,因为它都被缓存了)。
docker-compose config
n53p2ov04#
如果同时指定image和build,则Compose将使用image中指定的webapp和可选标记来命名生成的映像:
这将产生一个名为webapp且标记为tag的映像,该映像是从./dir构建的。https://docs.docker.com/compose/compose-file/#build
webapp
tag
./dir
qjp7pelc5#
如果您已经构建了映像,则可以使用docker tag命令重新标记它:
docker tag
docker tag imagename imagename:v1.0 docker tag imagename:v1.0 imagename:v1.1
如果您有多个标记附加到存储库,并且想要删除其中一个标记,则可以使用docker rmi命令:
docker rmi
$ docker rmi imagename:v1.0 Untagged imagename:v1.0
参考编号:
eyh26e7m6#
您可以尝试:
services: nameis: container_name: hi_my build: . image: hi_my_nameis:v1.0.0
t9aqgxwy7#
这对我很有效:https://docs.docker.com/build/customize/bake/compose-file/#specification
services: backend: build: context: ./backend dockerfile: Dockerfile tags: - spring-postgres:1.0 - spring-postgres:latest ports: - 8080:8080
然后运行docker compose build --no-cache输出,如下所示:
docker compose build --no-cache
> docker compose build --no-cache [+] Building 192.9s (13/13) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 457B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/eclipse-temurin:17-jre-focal 0.0s => [internal] load metadata for docker.io/library/maven:3.8.5-eclipse-temurin-17 0.0s => [builder 1/5] FROM docker.io/library/maven:3.8.5-eclipse-temurin-17 0.0s => CACHED [stage-1 1/3] FROM docker.io/library/eclipse-temurin:17-jre-focal 0.0s => [internal] load build context 0.0s => => transferring context: 1.05kB 0.0s => CACHED [builder 2/5] WORKDIR /code 0.0s => [builder 3/5] COPY pom.xml pom.xml 0.0s => [builder 4/5] COPY src . 0.0s => [builder 5/5] RUN mvn clean -DskipTests -T 2C -X -am install 192.5s => [stage-1 2/3] COPY --from=builder /code/target/*.jar app.jar 0.0s => exporting to image 0.0s => => exporting layers 0.0s => => writing image sha256:a5827124abc899efcfbc8db150f72f5ff8034d1ab93418dee5c15525ae4e42a1 0.0s => => naming to docker.io/library/spring-postgres-backend 0.0s => => naming to docker.io/library/spring-postgres:1.0 0.0s => => naming to docker.io/library/spring-postgres:latest 0.0s Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
以上控制台输出spring-postgres:1.0和spring-postgres:latest
spring-postgres:1.0
spring-postgres:latest
7条答案
按热度按时间niwlg2el1#
看起来docs/tool已经更新了,你现在可以在你的脚本中添加
image
标签了。示例:
https://docs.docker.com/compose/compose-file/#build
waxmsbnn2#
原始答案 * 2015年11月20日 *:
目前还没有针对特定标签的选项。Docker compose只是像你所看到的那样发挥它的魔力并分配一个标签。你可以在调用Docker compose之后让一些脚本调用
docker tag <image> <tag>
。现在有一个如上所述的选项
ccrfmcuu3#
我想补充的是,您还可以通过环境变量或.env文件来管理标记版本。
https://docs.docker.com/compose/environment-variables/#the-env-file
export TAG=1.11
示例:
要验证的
docker-compose config
在我的ci流水线中,我的第一个构建被标记为一个用于运行测试的一次性值,然后我把标记改为latest,并在推送到注册表之前再次重建(几乎是即时的,因为它都被缓存了)。
n53p2ov04#
如果同时指定image和build,则Compose将使用image中指定的webapp和可选标记来命名生成的映像:
这将产生一个名为
webapp
且标记为tag
的映像,该映像是从./dir
构建的。https://docs.docker.com/compose/compose-file/#build
qjp7pelc5#
如果您已经构建了映像,则可以使用
docker tag
命令重新标记它:如果您有多个标记附加到存储库,并且想要删除其中一个标记,则可以使用
docker rmi
命令:参考编号:
eyh26e7m6#
您可以尝试:
t9aqgxwy7#
这对我很有效:https://docs.docker.com/build/customize/bake/compose-file/#specification
然后运行
docker compose build --no-cache
输出,如下所示:以上控制台输出
spring-postgres:1.0
和spring-postgres:latest