๐Ÿ’ป/์ธํ”„๋ผ

[CI/CD] Vue ํ”„๋กœ์ ํŠธ๋ฅผ Jenkins (docker-in-docker) ๋ฐฐํฌํ•˜๊ธฐ

ruhz 2022. 7. 8. 11:42

๐Ÿ“ƒ๊ฐœ์š”

  1. ๋„์ปค๋กœ Jenkins ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
  2. Jenkins ์ปจํ…Œ์ด๋„ˆ์— docker-in-docker ๊ด€๋ จ ์„ธํŒ…์„ ํ•œ๋‹ค.
  3. GitLab ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ปค๋ฐ‹์ด ๋ฐœ์ƒํ•˜๋ฉด,  ์„ค์ •ํ•œ Dockerfile์„ ์‹คํ–‰ํ•˜๋„๋ก Jenkins๋ฅผ ์„ค์ •ํ•œ๋‹ค.
  4. ์†Œ์Šค๋ฅผ ๋นŒ๋“œํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ nginx ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ด ์ ์žฌํ•˜๋„๋ก Dockerfile์„ ์ž‘์„ฑํ•œ๋‹ค.
์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ปค๋ฐ‹ํ•˜๋ฉด, Jenkins๊ฐ€ ์ž๋™์œผ๋กœ ๋นŒ๋“œ/๋ฐฐํฌํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

๐ŸŽฏ ์ž‘์—…ํ™˜๊ฒฝ ๊ตฌ์„ฑ

1. WSL2 ์„ค์น˜

๋งˆ์นจ, ์–ผ๋งˆ์ „ ์ปดํ“จํ„ฐ๋ฅผ ํฌ๋งทํ•ด์„œ WSL์ด ์ง€์›Œ์ง„ ์ƒํƒœ์˜€๋‹ค. ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ์นœ์ ˆํ•œ ๊ฐ€์ด๋“œ๋ฅผ ๋ณด๊ณ  WSL2๋ฅผ์„ ๋‹ค์‹œ ์„ค์น˜ํ–ˆ๋‹ค(1). ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์„ ๋” ์พŒ์ ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ„ฐ๋ฏธ๋„์„ ์„ค์น˜ํ•˜๊ณ (2), ํŽธ์˜์„ฑ์„ ์œ„ํ•ด ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์˜ ๋ฐ”๋กœ๊ฐ€๊ธฐ๋ฅผ ๋ฐ”ํƒ•ํ™”๋ฉด์— ์ƒ์„ฑํ–ˆ๋‹ค(3).

(1) https://docs.microsoft.com/ko-kr/windows/wsl/install
(2) ์‹œ์ž‘ -> Microsoft Store -> Windows Terminal ์„ค์น˜ 
(3) https://segelache.tistory.com/11

 

 

2. Docker ์„ค์น˜

๋„์ปค ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€์„œ, Windows ๋ฒ„์ „์˜ Docker Desktop์„ ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค(4). ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด WSL2 ๋˜๋Š” Hyper-V๊ฐ€ ์š”๊ตฌ๋œ๋‹ค๊ณ  ๋˜์–ด ์žˆ๋‹ค. WSL2๋ฅผ ์ด๋ฏธ ์„ค์น˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•œ๋‹ค. ์„ค์น˜ ์‹œ ์˜ต์…˜์„ ์ˆ˜์ •ํ•  ๊ฒƒ ์—†์ด ๊ทธ๋Œ€๋กœ ์„ค์น˜ํ–ˆ๋‹ค .

(4) https://docs.docker.com/desktop/windows/install

 

 

 

๐ŸŽฏ Jenkins ์‹คํ–‰ ๋ฐ ์„ค์น˜

1. Jenkins ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

Docker Desktop์„ ์‹คํ–‰ํ•˜๊ณ  ํ„ฐ๋ฏธ๋„์„ ์ผœ Ubuntu ์ปค๋งจ๋“œ ์ฐฝ์„ ์—ด๊ณ , ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์ค€๋‹ค. 
๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์„ค๋ช…์€ ์•„๋ž˜ ๋”๋ณด๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ํ™•์ธํ•ด๋ณด์ž!

docker run -d \
-p 9090:8080 -p 50000:50000 \
-v /var/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
--name jenkins \
-u root \
jenkins/jenkins:lts-jdk11
๋”๋ณด๊ธฐ

-d

๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ชจ๋“œ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์ด ์˜ต์…˜์„ ๋ถ™์ด์ง€ ์•Š์œผ๋ฉด ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰๋˜๋Š”๋ฐ, ๊ฒŒ์ž„์„ ์ „์ฒดํ™”๋ฉด์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜๋งŒ ์ผœ๋†“๊ณ  ๊ตฌ๊ฒฝํ•  ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ํ•˜๋Š” ์˜ต์…˜์„ ๊ผญ ๋ถ™์—ฌ์ฃผ์ž.

 

-p

๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—๋„ ์™ธ๋ถ€์™€ ํ†ต์‹ ํ•  ํฌํŠธ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํ•ด๋‹น ํฌํŠธ๋ฅผ ํ˜„์žฌ ๊ธฐ๊ธฐ์˜ ํฌํŠธ์™€ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์ž‘์—…์ด๋‹ค. ์ง€๊ธˆ์˜ ๊ฒฝ์šฐ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์—์„œ 9090์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ์˜ 8080 ํฌํŠธ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ๋œ๋‹ค. ๋„์ปค์—์„œ ์ปจํ…Œ์ด๋„ˆ์˜ ํ†ต์‹  ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐํšŒ๊ฐ€ ๋œ๋‹ค๋ฉด ๊ผญ ๊ณต๋ถ€(5)ํ•ด๋ณด์ž.

 

-v

์ปจํ…Œ์ด๋„ˆ๋Š” ์‚ญ์ œ๋˜๋ฉด ๊ทธ ์•ˆ์˜ ์ •๋ณด๊ฐ€ ๋ชจ๋‘ ๋‚ ์•„๊ฐ€๊ธฐ ๋•Œ๋ฌธ์—, '๋ณผ๋ฅจ'(6)์ด๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•œ๋‹ค. ์ง„ํ–‰์‚ฌํ•ญ ๋“ฑ ๋ฐ์ดํ„ฐ์˜ ๋ณด์กด์„ ์œ„ํ•ด ๋ณผ๋ฅจ์„ ์„ค์ •ํ•ด์ฃผ์ž. ํ„ฐ๋ฏธ๋„์—์„œ /var/jenkins ํด๋”์— ๋“ค์–ด๊ฐ€๋ณด๊ณ , ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์— ๋“ค์–ด๊ฐ€(7) ๋‚ด์šฉ์„ ๋น„๊ตํ•ด๋ณด์ž. ๋กœ์ปฌ์˜ /var/jenkins ํด๋”๊ฐ€ ์ƒ๊ฒผ๊ณ , ๊ทธ ์•ˆ์—” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ฉฐ ์ƒ์„ฑ๋œ /var/jenkins_home์˜ ํŒŒ์ผ๋“ค์ด ๋ณต์‚ฌ๋˜์–ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

--name 

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์กฐ๊ธˆ ๋” ํŽธํ•˜๊ฒŒ ์ง€์นญํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฆ„์„ ๋ถ™์—ฌ์ค€๋‹ค.

 

-u

๊ณ„์ •๊ณผ ๊ด€๋ จ๋œ ์˜ต์…˜์ด๋‹ค. root๋กœ ํ•ด์•ผ ๊ถŒํ•œ ์ƒ์˜ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์• ๋จน์„ ์ผ์ด ์—†์„ ๊ฒƒ์ด๋‹ค.

 

(5) https://velog.io/@ckstn0777/%EB%8F%84%EC%BB%A4-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B5%AC%EC%A1%B0
(6) https://velog.io/@ckstn0777/%EB%8F%84%EC%BB%A4-%EB%B3%BC%EB%A5%A8
(7) docker exec -it jenkins sh

์ œ๋Œ€๋กœ ์‹คํ–‰๋๋‹ค๋ฉด, STATUS๊ฐ€ Up ์ƒํƒœ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

 

2. Jenkins GUI ์ ‘์†

Jenkins์˜ GUI ๋„๊ตฌ๋Š” 8080 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๊ฒƒ์„ ํ˜„์žฌ ๊ธฐ๊ธฐ์˜ 9090ํฌํŠธ์™€ ์—ฐ๊ฒฐํ–ˆ์œผ๋‹ˆ, localhost:9090์œผ๋กœ ์ ‘์†ํ•ด๋ณด์ž.

http://localhost:9090/

Jenkins๊ฐ€ Unlock ํŽ˜์ด์ง€์—์„œ ์„ค์ •ํ•œ์ ๋„ ์—†๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์š”๊ตฌํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ •์ƒ์ด๋‹ค. ๋‹นํ™ฉํ•˜์ง€ ๋ง๊ณ  ๋‹ค์‹œ ํ„ฐ๋ฏธ๋„๋กœ ๋Œ์•„๊ฐ€ docker logs jenkins๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž. ์•„๋ž˜ ์‚ฌ์ง„์— ํ‘œ์‹œ๋œ ๋ถ€๋ถ„์„ ๋ณต์‚ฌํ•ด ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ์ž ๊ธˆ์ด ํ•ด์ œ๋œ๋‹ค. ์—ฌ๊ธฐ๊นŒ์ง€ Jenkins๋ฅผ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•ด ๋„์šฐ๊ณ  ์ ‘๊ทผํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์„ค์ •์„ ์™„๋ฃŒํ–ˆ๋‹ค!

 

docker logs jenkins๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, Unlock ํ•  ์ˆ˜ ์žˆ๋Š” ์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

 

3. Jenkins ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜

์•„๋ฌด๊ฑฐ๋‚˜ ์ƒ๊ด€์—†๋‹ค. ๊ณผ์ • ์ค‘์— ๊ณ„์ •์„ ์„ค์ •ํ–ˆ๋‹ค๋ฉด, ๊ณ„์ •๋งŒ ์ž˜ ๊ธฐ์–ตํ•˜์ž.

์ถ”์ฒœํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๋ผ๊ณ  ๊ถŒ์œ ํ•˜๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ, ๋‚˜๋Š” ์ง์ ‘ ์„ ํƒํ•˜๋Š” ์˜ค๋ฅธ์ชฝ์„ ํด๋ฆญํ•˜๊ณ  ๋‹ค์‹œ ์ทจ์†Œ๋ฅผ ๋ˆŒ๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜๋ฅผ ๊ฑด๋„ˆ๋›ฐ์—ˆ๋‹ค(ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๊ณ  ๊ณ„์ •์„ ์„ค์ •ํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค). ๋‹จ, ๊ณ„์ • ์„ค์ •๊นŒ์ง€ ๊ฑด๋„ˆ๋›ฐ๊ฒŒ ๋˜๋Š”๋ฐ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •๋œ ์•„์ด๋””๋Š” admin, ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์•„๊นŒ ๋งจ ์ฒ˜์Œ Unlock ๋–„๋„ ์‚ฌ์šฉํ–ˆ๋˜, docker logs jenkins์˜ ๊ทธ ๊ฐ’์ด๋‹ค.

 

๋จผ์ € ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ฐ”๋กœ ์„ค์น˜ํ•ด๋ณด์ž. ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ฐพ์•„๊ฐ€๋ฉด, ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฒ€์ƒ‰ํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๋ฆฌ์ž ํ•ญ๋ชฉ์ด ์žˆ๋‹ค. ์„ค์น˜ ๊ฐ€๋Šฅ ํ•ญ๋ชฉ์œผ๋กœ ๋†“๊ณ  "GitLab", "Docker"๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ๊ฐ๊ฐ ์ƒ์œ„ 4๊ฐœ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์„ ๋ชจ๋‘ ์„ค์น˜ํ•ด์ค€๋‹ค. ๋ถˆ์•ˆํ•˜๋‹ค๋ฉด ์•„๋ž˜ ๋ชฉ๋ก๊ณผ ๋Œ€์กฐํ•ด ํ™•์ธํ•ด๋ณด์ž.

๋”๋ณด๊ธฐ
  • Generic WebhookTrigger Plugin
  • Gitlab API Plugin
  • GitLab Authentication plugin
  • GitLab Plugin
  • Docker API Plugin
  • Docker Commons Plugin
  • Docker Pipeline
  • Docker Plugin

 

 

 

4. docker in docker ์„ค์ •

์ž, ์—ฌ๊ธฐ์„œ ๋‚˜๋Š” Jenkins์— ๋”์ด์ƒ ์„ค์น˜ํ•ด์•ผ๋˜๋Š” ๊ฒƒ์ด ๋‹น์—ฐํžˆ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์„ค์ •์„ ๋งˆ์น˜๊ณ  Jenkins๋กœ ๋นŒ๋“œ๋ฅผ ํ•ด๋ดค๋Š”๋ฐ, Jenkins๊ฐ€ ๋„์ปค ๋ช…๋ น์–ด๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ์—ˆ๋‹ค! ๋‚˜๋Š” ๋ถ„๋ช… ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ–ˆ๋Š”๋ฐ! ํ•œ์ฐธ์„ ๊ณ ์ƒํ•œ ๋์— ๋Š˜ ๊ทธ๋žฌ๋“ฏ์ด ํ•œ ๋ธ”๋กœ๊ทธ์—์„œ ๊ทธ ์ด์œ ๋ฅผ ์ฐพ์•˜๋‹ค.

https://postlude.github.io/2020/12/26/docker-in-docker/
  1. Jenkins๊ฐ€ ๋„์ปค์˜ '๊ธฐ๋Šฅ์„ ์ด์šฉ'ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•œ ๊ฒƒ์ด์ง€, ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ๋„์ปค ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด ๊ตฌ์„ฑ๋œ ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ๋‹ค. 
  2. ๋”ฐ๋ผ์„œ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ Jenkins ๋‚ด๋ถ€์— ๋„์ปค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ๋„์ปค๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ๋‹จ, ๋„์ปค ์ „์ฒด๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ ๋Œ€์‹ ์— ๋„์ปค ํด๋ผ์ด์–ธํŠธ๋งŒ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.
  3. ํด๋ผ์ด์–ธํŠธ๋งŒ ์„ค์น˜ํ•ด๋„ ๋˜๋Š” ์ด์œ ๋Š” ์œ„์—์„œ ๋„์ปค ๋ณผ๋ฅจ์„ ์ด์šฉํ•ด , ํ˜„์žฌ ๋กœ์ปฌ PC์˜ ๋„์ปค ๋ฐ๋ชฌ์„ ๋นŒ๋ ค์“ธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค(8).

 

๊ฒฐ๊ตญ Jenkins ๋‚ด๋ถ€์— ๋„์ปค ํด๋ผ์ด์–ธํŠธ๋งŒ ์„ค์น˜ํ•ด์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค(9). ์•„๋ž˜ ๋ช…๋ น์–ด๋Š” get.docker.com์—์„œ ๋นŒ๋“œ๋œ ์••์ถ•ํŒŒ์ผ ์„๊ฐ€์ ธ์™€ ์••์ถ•ํ•ด์ œํ•œ๋‹ค. ํŒŒ์ผ์€ docker์™€ dockerd ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋Š”๋ฐ, ๊ฐ๊ฐ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์—”์ง„์ด ํฌํ•จ๋˜์–ด์žˆ๋‹ค(10).

(8) https://www.hanumoka.net/2019/10/14/docker-20191014-docker-jenkins-docker-in-docker/
(9) https://stackoverflow.com/questions/38675925/is-it-possible-to-install-only-the-docker-cli-and-not-the-daemon
(10) https://github.com/moby/moby/issues/15360
# ๋กœ์ปฌ์—์„œ ๋„์ปค ๋ฒ„์ „์„ ํ™•์ธํ•œ๋‹ค.
docker --version

# ํ•ด๋‹น ๋ช…๋ น์–ด๋กœ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋กœ ์ ‘์†ํ•œ๋‹ค.
docker exec -it -u root jenkins sh

# ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์ž…๋ ฅํ•œ๋‹ค(๋„์ปค ๋ฒ„์ „์€ ๋กœ์ปฌ ๋ฒ„์ „๊ณผ ํ†ต์ผ์‹œ์ผœ์คฌ๋‹ค).
DOCKER_VERSION=19.03.5
curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-$DOCKER_VERSION.tgz | tar zxvf - --strip 1 -C /usr/local/bin docker/docker

 

 

 

๐ŸŽฏ Jenkins ์„ค์ • ๋ฐ GitLab ์—ฐ๋™

๋จผ์ € GitLab์— Jenkins์™€ ์—ฐ๋™ํ•  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ , ๋นŒ๋“œ ์ „์˜ ๋นŒ๋“œ ๊ฐ€๋Šฅํ•œ ์†Œ์Šค๋ฅผ ์˜ฌ๋ ค๋‘”๋‹ค. 

 

ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด, ์†Œ์Šค์ฝ”๋“œ ๊ด€๋ฆฌ ํƒญ์— ๋“ค์–ด๊ฐ€์„œ Git์„ ์ฒดํฌํ•ด์ค€๋‹ค. ์—ฌ๊ธฐ์„œ Repository URL์— ์•„๊นŒ ์ƒ์„ฑํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ๋ณต๋ถ™ํ•˜๋ฉด ๊ถŒํ•œ ๊ด€๋ จ ์—๋Ÿฌ๊ฐ€ ๋‚  ๊ฒƒ์ด๋‹ค. ์ฃผ์†Œ์— ์œ ์ € ์ด๋ฆ„๊ณผ GitLab ํ† ํฐ์„ ํฌํ•จ์‹œ์ผœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ž…๋ ฅํ•œ๋‹ค.

http://username:personal_access_token@repository_url

์—๋Ÿฌ๊ฐ€ ์•ˆ ๋œฌ๋‹ค๋ฉด, ๋‹ค์Œ์œผ๋กœ Credentials์˜ Add๋ฅผ ๋ˆŒ๋Ÿฌ ๊ณ„์ •์„ ์ถ”๊ฐ€ํ•ด์ฃผ์ž. ์•„๋ฌด๊ฒƒ๋„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  Username, Password, ID๋งŒ ์ ๋‹นํžˆ ์ž…๋ ฅํ–ˆ๋‹ค. ์ถ”๊ฐ€ํ•˜๊ณ  ๋‚˜์™€, Credentials์˜ -none-์„ ๋ฐฉ๊ธˆ ์ƒ์„ฑํ•œ ๊ณ„์ •์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

 

 

์–ด๋–ป๊ฒŒ ๋นŒ๋“œ๋ฅผ ํ•  ๊ฒƒ์ธ์ง€ ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•œ๋‹ค. ์šฐ๋ฆฌ๋Š” Jenkins ๋‚ด๋ถ€์— ๋„์ปค ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์น˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋กœ๋„ ๋„์ปค์˜ ๋ช…๋ น์–ด๋ฅผ ์–ผ๋งˆ๋“ ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค! ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ์ž…๋ ฅํ•˜๊ณ  ์ €์žฅ์„ ๋ˆŒ๋Ÿฌ ๋น ์ ธ๋‚˜์˜ค์ž. ์ด์ œ ํ•ด๋‹น ๋ช…๋ น์–ด๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก, Dockerfile๋งŒ ์ž‘์„ฑํ•˜๋ฉด ๋์ด๋‹ค!

 

docker build -t hello_hhlab:latest .
docker run -d -p 80:80 hello_hhlab

 

 

 

๐ŸŽฏ Dockerfile ์ž‘์„ฑ

๋นŒ๋“œํ•  ์†Œ์Šค ์˜ˆ์‹œ๋กœ Vue ํ”„๋กœ์ ํŠธ(vue-cli ์ด์šฉ(11))๋ฅผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์˜ฌ๋ ค๋’€๋‹ค. ์—ฌ๊ธฐ์„œ ์ƒ์„ฑํ•  ํŒŒ์ผ์€ ๋‘๊ฐœ๋‹ค. 

nginx/default.conf
Dockerfile
https://programmerk.tistory.com/51?category=883634

ํ•œ์ฐธ ํ•ด๋งฌ๋ป”ํ–ˆ๋Š”๋ฐ, ์นœ์ ˆํ•œ ๋ธ”๋กœ๊ทธ์˜ ๋„์›€์„ ๋ฐ›์•˜๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์œ„ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๋“ฏ ํ•˜๋‹ค. default.conf๋Š” nginx ํด๋” ๋ฐ‘์— ์ƒ์„ฑํ•ด์„œ(12) ์„œ๋ฒ„์˜ ๊ธฐ๋ณธ์ ์ธ ์„ค์ •์„ ํ•ด์ค€๋‹ค.

Dockerfile์€ ํฌ๊ฒŒ ๋‘ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰œ๋‹ค. node ์ปจํ…Œ์ด๋„ˆ๋กœ Vue ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋‹จ๊ณ„, nginx ์ปจํ…Œ์ด๋„ˆ์— ์ž‘์„ฑํ•œ ์„ค์ •ํŒŒ์ผ(default.conf)์„ ๋ณต์‚ฌํ•˜๊ณ , ๋นŒ๋“œํ•œ Vue ํ”„๋กœ์ ํŠธ๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๋‹จ๊ณ„์ด๋‹ค(13).

(11) https://cli.vuejs.org/guide/creating-a-project.html#vue-create
(12) https://gonna-be.tistory.com/20
(13) https://programmerk.tistory.com/51?category=883634

 

 

๐Ÿšซ ์—ฌ๊ธฐ๊นŒ์ง€ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ถ”๊ฐ€๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋“ค 

PC์— ์„ค์น˜ํ•  ๋• ๊ฒช์—ˆ์œผ๋‚˜, ๋…ธํŠธ๋ถ์— ์„ค์น˜ํ•  ๋• ๊ฒช์ง€ ์•Š์€ ์˜ค๋ฅ˜๋“ค์„ ๋ชจ์•˜๋‹ค.

๋”๋ณด๊ธฐ

ํ•ด๋‹น ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ, ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž๊พธ Up์ด ์•„๋‹Œ Exited ์ƒํƒœ๋กœ ๋ณด์ผ ๋•Œ(๋ณผ๋ฅจ ๊ถŒํ•œ ๋ฌธ์ œ) : https://chiftkey.tistory.com/3

 

Docker๋กœ Jenkins ์‚ฌ์šฉ ์‹œ ๋ณผ๋ฅจ๊ด€๋ จ ๊ถŒํ•œ ๋ฌธ์ œ

dockerhub์˜ ๊ณต์‹ jenkins ์ด๋ฏธ์ง€ jenkins - Docker Hub DEPRECATION NOTICE This image has been deprecated in favor of the jenkins/jenkins:lts image provided and maintained by Jenkins Community as part..

chiftkey.tistory.com

 

์•ฝ๊ฐ„ ๋‹ค๋ฅธ ๋ฌธ์ œ์ง€๋งŒ ์ €๋Š” ๊ฐ‘์ž๊ธฐ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰์ด ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ๋„ ๋ฐœ์ƒํ–ˆ์—ˆ์Šต๋‹ˆ๋‹คใ… ใ…  :
https://itpro.tistory.com/100

 

์Šคํฌ๋ฆฝํŠธ ๋ณด์•ˆ ์˜ค๋ฅ˜ PSSecurityException ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

ReactJSํ”„๋กœ์ ํŠธ๋ฅผ Visual Studio Code Build์‹œ ์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ์Šคํฌ๋ฆฝํŠธ ๊ถŒํ•œ์ด ์ œํ•œ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์œˆ๋„์šฐ ๊ฒ€์ƒ‰์—์„œ PowerShell์„ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰์‹œ์ผœ์ค๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ

itpro.tistory.com

 

docker.sock์˜ permission denied๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ : 
https://github.com/occidere/TIL/issues/116

 

docker ์„ค์น˜ ํ›„ /var/run/docker.sock์˜ permission denied ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ · Issue #116 · occidere/TIL

docker ์„ค์น˜ ํ›„ /var/run/docker.sock์˜ permission denied ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ์ƒํ™ฉ docker ์„ค์น˜ ํ›„ usermod๋กœ ์‚ฌ์šฉ์ž๋ฅผ docker ๊ทธ๋ฃน์— ์ถ”๊ฐ€๊นŒ์ง€ ์™„๋ฃŒ ํ›„ ํ„ฐ๋ฏธ๋„ ์žฌ์ ‘์†๊นŒ์ง€ ํ–ˆ์œผ๋‚˜ permission denied ๋ฐœ์ƒ (์„ค์น˜ ์ฐธ๊ณ : https://b

github.com

 

 

 

 

๐ŸŽ‰ ๋งˆ์ง€๋ง‰์œผ๋กœ...

  • ์ž‘์„ฑํ•œ ํŒŒ์ผ๋“ค์„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ํ‘ธ์‰ฌํ•˜๊ณ  Jenkins๋ฅผ ํ™•์ธํ•ด๋ณด์ž.
  • ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๋ฉด ๋‹ค์‹œ Build Now๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด์ž.
  • ๊ทธ๋ž˜๋„ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๋ฉด ๋นŒ๋“œ๋ฅผ ํด๋ฆญํ•ด Console Output์„ ํ™•์ธํ•œ๋‹ค. (์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ  ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค.)

์ž˜ ์ซ“์•„ํ–ˆ๋‹ค๋ฉด ์ž˜ ๋˜๊ฒ ์ง€๋งŒ, ๋‚˜๋„ PC์—์„œ ์„ค์น˜ํ•  ๋•Œ์™€ ๋…ธํŠธ๋ถ์— ์„ค์น˜ํ•  ๋•Œ ๋ถ„๋ช… ๊ฐ™์€ ์ž‘์—…์ž„์—๋„ ๋‹ค๋ฅธ ํ™”๋ฉด๊ณผ ์˜ค๋ฅ˜๋ฅผ ๋งŽ์ด ๋งˆ์ฃผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋‚˜๋„ ์ฒ˜์Œ ๋ณด๋Š” ๋ถ„์•ผ๋ผ ์‰ฝ์ง€ ์•Š์•˜์ง€๋งŒ, ์ฐจ๊ทผ์ฐจ๊ทผ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ์˜ค๋ฅ˜๋„ ๊ธˆ๋ฐฉ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค! ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด๋ณด์ž.

 

http://localhost:80/