GiitLab CI에서 Docker 이미지를 만들기 전에 고민이 많았던 말.

11409 단어 DockerGitLab-CI

고민하다


어느 날, GiitLab CI로 Docker 이미지를 만들고 싶었어요.
좋아, 이렇게 (이하 참조.gitlab-ci.yml가 예다.저의 고질병""이 너무 많은 것을 용서해 주세요.)
stages:
  - build
  - docker
build:
  image: ubuntu
  stage: build
  script:
    - echo some build tasks here
  artifacts:
    paths:
      - "result.file"
docker:
  image: docker
  stage: docker
  script:
    - "sh -c \"$DOCKER_LOGIN_COMMAND\" > /dev/null"
    - "docker build -t a-docker-image ."
    - "docker push a-docker-image"
실패하겠죠.
그럼 이렇게
stages:
  - build
  - docker
build:
  image: ubuntu
  stage: build
  script:
    - echo some build tasks here
  artifacts:
    paths:
      - "result.file"
docker:
  image: docker
  stage: docker
  script:
    - service docker start
    - "sh -c \"$DOCKER_LOGIN_COMMAND\" > /dev/null"
    - "docker build -t a-docker-image ."
    - "docker push a-docker-image"
이래도 안 돼.
그때?
그럼 이렇게 할까요?
stages:
  - build
  - docker
build:
  image: ubuntu
  stage: build
  script:
    - echo some build tasks here
  artifacts:
    paths:
      - "result.file"
docker:
  image: ubuntu
  stage: docker
  script:
    - "apt update ; apt -y install apt-transport-https ca-certificates curl"
    - "curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -"
    - "sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\""
    - "apt update ; apt-get -y install docker-ce"
    - service docker start
    - "sh -c \"$DOCKER_LOGIN_COMMAND\" > /dev/null"
    - "docker build -t a-docker-image ."
    - "docker push a-docker-image"
아니야.
그럼 StackOverflow 물어보세요.

여기까지 왔습니다.투고 버튼의 볼록점이 이미 끝났다.
하지만 구글에 먼저 가보는 게 좋을 것 같아요.

있다


네?
그리고 있잖아 docs.gitlab.com이것.
그럼 어떡하지?

그럼 어떡하지?


먼저 답을 표시합니다.
stages:
  - build
  - docker
# 追加行 始め
variables:
  DOCKER_DRIVER: overlay
services:
  - docker:dind
# 追加行 終わり
build:
  image: ubuntu
  stage: build
  script:
    - echo some build tasks here
  artifacts:
    paths:
      - "result.file"
docker:
  image: docker
  stage: docker
  script:
    - "sh -c \"$DOCKER_LOGIN_COMMAND\" > /dev/null"
    - "docker build -t a-docker-image ."
    - "docker push a-docker-image"
아, 드디어 다 했구나.
댓글만 빼고 네 줄이면 돼요.DOCKER_DRIVER=overlay의 환경 변수와 docker:dind의 Docker 이미지가 제공하는 서비스를 사용한다고 발표하면docker build됩니다.

최후


나는 몇 시간이 걸려서야 비로소 이 방법에 도달했다.
투덜거리는 게 중요하죠.

좋은 웹페이지 즐겨찾기