
도커 이미지 및 Node.js 소스코드는 아래 사이트를 참조하였다.
wickedev / CI-CD-Tutorial · GitLab
Gitlab CI/CD Tutorial
gitlab.com
또한, 해당 실습은 아래 내용이 선행되었다고 가정하여 진행한다.


1. GitLab Project 생성

2. GitLab Nexus 배포 프로젝트 가져오기
Nexus 에 도커 이미지 빌드 후 배포하는 코드는 아래에서 클론하여 가져오면 된다.
GitHub - jiwonYun9332/CICD
Contribute to jiwonYun9332/CICD development by creating an account on GitHub.
github.com

3. 환경변수 설정
환경변수를 미리 선언하여, 코드 내에서 가져다 사용할 수 있다.
필자는 Nexus IP:PORT, Nexus ID, Nexus PW 에 대하여 먼저 환경변수를 선언하였다.

환경변수 설정
DOCKER_PRIVATE_HOST
: Nexus IP:Port 를 적는다.
ex) 192.168.0.100:5443
DOCKER_PRIVATE_PASSWORD
: Nexus 패스워드
DOCKER_PRIVATE_USER
: Nexus ID
4. 코드분석
.gitlab-ci.yml
image: monoless/ansible-docker:18.09.9-dind-03
services:
- name: monoless/ansible-docker:18.09.9-dind-03
command: ["--insecure-registry={nexus_ip}:5443"]
stages:
- build
variables:
IMAGE_NAME: $DOCKER_PRIVATE_HOST/openstack:$CI_PIPELINE_ID
build:
stage: build
script:
- docker build . -t $IMAGE_NAME
- docker login -u $DOCKER_PRIVATE_USER -p $DOCKER_PRIVATE_PASSWORD $DOCKER_PRIVATE_HOST
- docker push $IMAGE_NAME
Dockerfile
# This file is a template, and might need editing before it works on your project.
FROM node:latest
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
# replace this with your application's default port
EXPOSE 8080
CMD [ "npm", "start" ]
index.js
const express = require('express')
const app = express()
app.get('/', function(req, res) {
res.send('Hello Gitlab!')
})
app.listen(8080, function() {
console.log('Example app listening on port 8080!')
})
package.json
{
"name": "CI-CD-Tutorial",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"express": "^4.17.1"
}
}
.gitignore
tmp
.DS_Store
5. 'docker daemon. Is 'docker daemon running on this host?' 와 같은 에러 발생 시

config.toml (GitLab Runner 설정파일)
[runners.docker]
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
호스트의 Docker 소켓(/var/run/docker.sock)을 Runner 컨테이너 내부로 마운트하여 사용
6. 빌드 후 도커 이미지 생성 확인
Nexus 에 정상적으로 이미지가 배포된 것을 알 수 있다.


'CICD > GitLab' 카테고리의 다른 글
[CI/CD] GitLab Runner 로 CI 빌드 및 테스트 (0) | 2025.03.30 |
---|---|
[CI/CD] GitLab 프로젝트 생성 및 커밋해보기 (1) | 2025.03.29 |
[CI/CD] Docker + GitLab 서버 구축 (2) | 2025.03.29 |