我想通过docker-compose构建图像,并设置特定的标签。文档中说:
Compose将构建并标记一个生成的名称,并使用该名称 图像。
但是我找不到一种方法来指定标签,对于构建的图像,我总是看到“最新”标签。
我想通过docker-compose构建图像,并设置特定的标签。文档中说:
Compose将构建并标记一个生成的名称,并使用该名称 图像。
但是我找不到一种方法来指定标签,对于构建的图像,我总是看到“最新”标签。
当前回答
原答案15年11月20日:
截至今天,没有特定标记的选项。Docker compose只是发挥它的魔力,像你看到的那样分配一个标签。在你调用docker-compose之后,你总是可以有一些脚本调用docker tag <image> <tag>。
现在有一个如上所述的选项
build: ./dir
image: webapp:tag
其他回答
看起来docs/tool已经更新了,你现在可以把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
根据官方文件:https://docs.docker.com/compose/environment-variables/set-environment-variables/
您可以从.env文件中设置环境变量
$ cat .env
TAG=v1.5
然后,您可以检索它并将其用作图像的标记。
$ cat docker-compose.yml
services:
web:
image: "webapp:${TAG}"
你可以通过命令docker compose convert来验证
$ docker compose convert
services:
web:
image: 'webapp:v1.5'
原答案15年11月20日:
截至今天,没有特定标记的选项。Docker compose只是发挥它的魔力,像你看到的那样分配一个标签。在你调用docker-compose之后,你总是可以有一些脚本调用docker tag <image> <tag>。
现在有一个如上所述的选项
build: ./dir
image: webapp:tag
它适合我: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 output,如下所示:
> 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:最新
如果你已经构建了你的映像,你可以使用docker tag命令重新标记它:
docker tag imagename imagename:v1.0
docker tag imagename:v1.0 imagename:v1.1
如果你有多个标签附加到你的存储库,如果你想删除其中一个,你可以使用docker rmi命令:
$ docker rmi imagename:v1.0
Untagged imagename:v1.0
参考:
https://docs.docker.com/engine/reference/commandline/tag/ https://docs.docker.com/engine/reference/commandline/rmi/