docker in docker에서 volume이 마운트 되지 않을때

IKNOW·2023년 10월 22일
0

docker

목록 보기
1/2
post-thumbnail

이전 프로젝트 I'm Fine Apple에서는 github actions를 통해 CICD를 진행했었지만,
get-moim 프로젝트는 jenkins를 통해 CICD를 진행하였다.
여기서 문제가 생긴게 jenkins컨테이너 안에서 docker-compose 를 통해 도커를 올렸는데

Host를 H로 나타내고
H에서 돌고있는 젠킨스 컨테이너를 J,
J에서 올릴 nginx 컨테이너를 N이라고 하면,
계속 시도했던 docker-compose.yml 파일은 다음과 같았다
conf

version: "3.7"
services:
  nginx:
    image: "nginx:latest"
    container_name: get-moim-vue
    volumes:
      - ./conf: /etc/nginx/conf.d
      - ./dist: /etc/share/html
 ...skip

볼륨을 [J]:[N]으로 마운트 하려고 했던건데,
처음에는 꽤 합리적이라고 생각했다.
docker-compose up 스크립트는 jenkins 컨테이너 안에서 실행되는 거고 jenkins container에서 docker-compose.yml과 conf, dist 디렉토리는 같은 위치에 있기 때문에

volumes:
  - ./conf: /etc/nginx/conf.d
  - ./dist: /etc/share/html

라고 표기하면 될 것이라고 생각 했다.

하지만 아무리 docker-compose up으로 container를 올려도 제대로 nginx가 구동이 안되었는데

docker exec -it <NginxContainerId> /bin/bash

로 들어가서 확인했을때 conf.d 폴더와 html가 빈 폴더형식으로 나타난걸 확인했다.

그래서 이때 조금 고민을 많이 했는데...

생각해보니 jenkins는 docker in docker로 host와 docker가 연결되어 있었고
Docker in Docker cannot mount volume
에서 확인한 결과 [H]:[N]으로 연결해 주어야 한다는 것을 확인하고

version: "3.7"
services:
  nginx:
    image: "nginx:latest"
    container_name: get-moim-vue
    volumes:
      - /hostpath/conf: /etc/nginx/conf.d
      - /hostpath/dist: /etc/share/html
 ...skip

로 변경하자 제대로 nginx컨테이너가 구동되는 것을 확인 할 수 있었다.

profile
조금씩,하지만,자주

0개의 댓글