인프런 커뮤니티 질문&답변

isecure님의 프로필 이미지

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

Azure pipeline을 구축시 환경 변수 설정하는 위치

작성

·

401

·

수정됨

1

항상 강의 감사하게 듣고 있습니다.

해당 강의에는 azure CI/CD 내용은 없지만 구축해서 사용하려고 합니다.

그런데 docker를 구동할때 여러 환경변수(azure_account_name, azure_account_key, DEBUG, ALLOWED_HOST 등)들을 옵션으로 설정하게 되는데, azure에서 pipeline을 구축할 경우 해당 변수들을 어떻게 설정하는지 모르겠습니다.

dev.azure.com에서 Pipelines->Variables 에서 설정하면 되는 것으로 알고 있었는데 변수가 전혀 먹지를 않네요.

어떻게 해야 할런지요?

참고로 yml을 사용하지 않고 classical하게 GUI로 설정하고 있습니다.

 

추가로 collectstatic을 별도의 bash shell이나 command line을 통해서 하는게 좋은 건지, dockerfile 내부에서 하는게 좋은 건지 말씀부탁드리겠습니다.

고맙습니다.

 

 

답변 2

0

이진석님의 프로필 이미지
이진석
지식공유자

buildAndPush 커맨드에서는 도커 빌드 옵션을 지정할 수 없더라구요.

커맨드는 buildAndPush가 아니라 build로 변경하시면, Arguments 옵션이 나옵니다.
도커 빌드 태스크와 푸쉬 태스크를 나눠서 처리하시는 것이 나아보입니다.

Arguments 옵션에 추가적인 docker build 옵션을 지정하실 수 있습니다.

image

아래처럼 지정하고싶으신 ARG수만큼 --build-arg 옵션을 지정하시면 됩니다.

--build-arg ALLOWED_HOSTS="$(ALLOWED_HOSTS)" --build-arg AZURE_ACCOUNT_NAME="$(AZURE_ACCOUNT_NAME)"

혹은 bash 태스크에서 쉘 명령으로 도커 빌드 및 푸쉬 명령을 직접 내리시는 것도 한 방법입니다.

살펴보시고 댓글 남겨주세요.

화이팅입니다. :-)

0

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

저도 방금 Azure Pipelines을 하나 생성하여 테스트를 해봤습니다.

아래와 같이 HELLO 이름의 Variable을 하나 정의했구요.

image

Bash Script 태스크를 하나 추가하고, 환경변수 HELLO 값을 echo 토록 했습니다.

image

구동해보면, 아래와 같이 HELLO 환경변수 값으로 WORLD가 출력됨을 확인하실 수 있습니다.

image

일단 Variables는 동작함을 이렇게 확인해봤습니다.

도커 프로젝트라 하더라도, CD에서는 원하는 OS로 구동이 가능하니
python manage.py collectstatic 명령은 Pipelines Task에서 수행하시는 것이 더 적합하지 않을까 생각합니다.

화이팅입니다. :-)

isecure님의 프로필 이미지
isecure
질문자

늦은 시간까지 답변을 주셔서 고맙습니다.

변수 설정은 확인이 됐습니다.

그런데 ALLOWED_HOSTS, AZURE_ACCOUNT_NAME, DATABASE_HOST 등을 변수로 설정하면 이 "값"들이 Dockerfile에 의해 이미지가 만들어질 때 들어가야 하는데 그렇지 못합니다.

이상한 점은 다른 프로젝트에서는 동일한 구성으로 잘 작동을 하는것 같은데 오랫만에 다시 하려니 안되네요 ㅠㅠ

ARG DEBUG

ENV DEBUG=$DEBUG

이런식으로 Dockerfile에 넣어도 작동을 하지 않습니다.

뭐가 잘못됐을까요...

image

이진석님의 프로필 이미지
이진석
지식공유자

어떤 Task를 사용하셨고, 어떻게 설정하셨나요?

Variables는 환경변수로 전달이 될 뿐, 도커 빌드나 컨테이너에는 따로 전달을 해주어야 합니다.

ARG는 빌드 시에 참조할 값으로서 docker build 시에 --build-arg 인자로 전달이 되어야하구요.
환경변수 값이 알아서 ARG로 전달되는 것은 아닙니다.

docker run 시에 환경변수로 참조될 값은 -e 옵션으로 전달되어야 하구요.

도커 build/run 명령과 각 Task 설정에 대해서 차근차근 정리해보세요.

화이팅입니다. :-)

isecure님의 프로필 이미지
isecure
질문자

강의 내용에 답이 있었네요 ^^;;;

급한 마음에 자꾸 다른 곳만 헤매다 고생만 했네요.

감사합니다.

isecure님의 프로필 이미지

작성한 질문수

질문하기