본문 바로가기
도구/Git

[Gitlab] gitlab cicd 사용해 docker image 배포

by 작은소행성 2021. 11. 3.

gitlab cicd 를 이용해 프로젝트를 배포하려고 한다. 

 

 

먼저 gitlab runner를 만들어주고

2021.11.02 - [공부/Git] - [Gitlab] gitlab runner 생성하기

 

gitlab 프로젝트에 Dockerfile 과 .gitlab-ci.yml 파일 두개를 만들어 준다.

 

 

현재 프로젝트는

spring + gradle + jar 로 배포할 것이다.

 

 

Dockerfile 에는 이미지 기본 환경을 세팅해준다.

FROM payneteasy/jdk-8
COPY ${JAR_FILE} app.jar
ENV JAVA_OPTS=""
ENV DOCKER_OPTS="--insecure-registry <IP>:35000"
ENTRYPOINT ["java","-jar","/app.jar"]

 

FROM 에 사용된 payneteasy/jdk-8 이미지는

도커에서 docker searc jdk 로 필요한 jdk 환경을 선택해주었다.

 

 

 

 

gitlab-ci.yml

 

 

variables:
  IMAGE_NAME: <IP>:35000/<NAME>/<PROJECT_NAME>:$CI_PIPELINE_ID
#   DOCKER_HOST: "tcp://172.17.0.1:2375"

before_script:
  - export

stages:
#   - test
  - build
  - deploy
  
  
build:
  stage: package
  image: docker:latest
  services:
    - docker:dind
  stage: build
  script:
    # - ls -al
    - docker login -u <ID> -p <PASSWORD> <IP>:35000
    - docker build --tag $IMAGE_NAME .
    - docker push $IMAGE_NAME

deploy:
  stage: deploy
  image: docker:latest
  services:
    - docker:dind
  script:
    # - docker container ls -a
    - ID=$(docker ps -a --filter="name=build-$CI_PROJECT_NAME" -q) && [[ -n $ID ]] && docker stop $ID && docker rm $ID
    - docker images && docker rmi 
    - docker run -itd --name build-$CI_PROJECT_NAME -p 35100:9009 $IMAGE_NAME

  environment:
      name: build
      url: http://192.168.10.52:35100
  only:
      - master

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형