programing

도커 합성으로 도커 이미지에 태그를 지정하는 방법

yellowcard 2023. 8. 18. 22:28
반응형

도커 합성으로 도커 이미지에 태그를 지정하는 방법

도커 합성을 통해 이미지를 빌드하고 특정 태그를 설정하고 싶습니다.설명서에는 다음이 나와 있습니다.

작성은 생성된 이름으로 작성하고 태그를 지정한 후 해당 이미지를 사용합니다.

그러나 태그를 지정하는 방법을 찾을 수 없으며 빌드된 이미지의 경우 항상 '최신' 태그가 표시됩니다.

된 것 . "/" 문서를 할 수 . 이제 추가할 수 있습니다.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

2015년 11월 20일 원본 답변:

오늘 현재 특정 태그에 대한 옵션이 없습니다.도커 컴포지트는 마법을 부리고 당신이 보는 것처럼 태그를 할당합니다. " 든지스트통할수있다니습를화언제립크▁call다니▁script있▁some▁you"라는 스크립트를 사용할 수 .docker tag <image> <tag>당신이 부두 노동자를 부른 후에.

위 또는 여기에 설명된 옵션이 있습니다.

build: ./dir
image: webapp:tag

환경 변수나 .env 파일을 통해 태그 버전을 관리할 수도 있습니다.

https://docs.docker.com/compose/environment-variables/ #the-env-file

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 파이프라인에서 첫 번째 빌드는 테스트 실행에 사용되는 일회용 값으로 태그가 지정됩니다.그런 다음 태그를 최신으로 변경하고(모두 캐시되었기 때문에 거의 즉시) 다시 빌드한 다음 레지스트리를 푸시합니다.

이미지를 이미 구축한 경우 다음을 사용하여 이미지에 다시 태그를 지정할 수 있습니다.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

참조:

빌드뿐만 아니라 이미지를 지정하는 경우, 작성은 이미지에 지정된 웹 앱과 선택적 태그를 사용하여 빌드된 이미지의 이름을 지정합니다.

build: ./dir
image: webapp:tag

이렇게 하면 다음과 같은 이미지가 생성됩니다.webapp 태그된 그가지정된태.tag만으로 ./dir.

https://docs.docker.com/compose/compose-file/ #build

시도할 수 있습니다.

services:
  nameis:
    container_name: hi_my
    build: .
    image: hi_my_nameis:v1.0.0

나에게 효과가 있습니다: https://docs.docker.com/build/customize/bake/compose-file/ # 사양

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
[+] 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

공식 문서에 따르면: 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'

https://docs.docker.com/compose/compose-file/ #이미지

이미지가 플랫폼에 존재하지 않는 경우 Composite 구현은 다음을 기반으로 이미지를 끌어오기를 시도해야 합니다.pull_policy빌드 지원을 사용하여 구현을 구성하면 최종 사용자가 원본에서 이미지를 빌드하는 우선 순위를 제어할 수 있는 대체 옵션이 제공될 수 있지만, 이미지를 풀링하는 것이 기본 동작이어야 합니다.

https://docs.docker.com/compose/compose-file/build/ #http://tags

tags빌드 이미지와 연결해야 하는 태그 매핑 목록을 정의합니다.이 목록은 추가로 제공됩니다.image서비스 섹션에 정의된 속성

한다면image를 지정하면 이미지 풀링이 기본 동작이 되므로 로컬 이미지만 사용하려면image.

tagsbuild섹션은 로컬 이미지의 태그를 지정하는 올바른 위치입니다.

services:
  backend:
    build:
      context: backend
      dockerfile: ../backend.Dockerfile
      tags:
        - "myimage:mytag"

언급URL : https://stackoverflow.com/questions/33816456/how-to-tag-docker-image-with-docker-compose

반응형