ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [NAS] Docker Container 환경변수 파일로 전달하기.
    IT 2025. 2. 27. 17:08

    우리는 secret key 또는 api key 같은 것들을 코드에 공개해놓으면 안되고 숨겨놔야해요.

    왜인지는 피해 사례 검색해보시면 알듯..

     

    아무튼:! 우리는 이런 것들을 서버에 환경변수로 저장해서 불러오도록 해볼게요.

    -e 를 사용해서 그냥 변수로 전달할 수 도 있겠지만 환경변수가 많아지면 계속 이어 붙일 수 가 없기 때문에 파일로 보내기로 했습니다..

     

    Dockerfile에 ENV를 선언하지 않아오 되요,

    일단 저는 파일 .env 파일을 하나 만들어서 특정 경로 에 넣고 그리고 거기에 환경변수를 적는데

    test=123 이런식으로 적습니다 따옴표" 나 띄어쓰기는 하지 않습니다.

    다 적고 나서 도커 이미지를 실행시킬 떄 아래와 같이 명령어를 사용하는데요.

     

     

    jenkins 서버는 다음과 같이 실행합니다. 

    -- env-file 쪽에서 jenkins 쪽으로 nas 서버의 환경 설정 파일을 넘겨줌으로써 사용할 수 있게 할 수 있습니다.

    또한, -v /volume1/docker/.env:/var/docker/.env 를 통해서 서버나 jenkins-server에서의 수정사항을 바로 마운트할 수 있게 합니다.

    왜 이렇게 하느냐? 저는 jenkins가 docker container에서 돌아가는데 이 jenkins container안에서 django project container를 빌드하고 배포하기 때문입니다. 그러기 위해서는 nas서버와 동일한 데이터를 가지고 있고 수정사항이 바로 반영되어야하겠죠.

    sudo docker run -d \
    	--name jenkins-server \
        --env-file <nas 서버 .env파일 경로>
        -u root \
        -p 8091:8080 \
        -v jenkins_home:/var/jenkins_home \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v /volume1/docker/.env:/var/docker/.env \
      jenkins/jenkins:lts

     

    django 프로젝트는 jenkins container안에 있어서 다음과 같이 진행했습니다.

    docker run -d
        --name <도커 컨테이너 이름> \
        --network <네트워크 이름> \
        --env-file <jenkins container .env파일 경로> \
        -p <포트:포트> \
        <도커 이미지>:<버전>

     

     

    다만 여기서 단점은 nas -> jenkins container -> django container 로 전해지다보니까 django의 환경변수가 변경되거나 수정할 경우에 nas에서 수정하고 jenkins container와 django container 둘 다 다시 시작해야 한다는 거죠.

    그것 말고는 없습니다.

     

    암튼 여기까지.. 챗 지피티 안보고 블로그로 봤으면 시간 얼마 언걸렸을텐데 챗지피티가 이럴떄는 안좋네요.. 오래 걸림 쓸데없는거 하다가

Designed by Tistory.