728x90
도커(Docker)를 사용하여 애플리케이션을 컨테이너화할 때, 컨테이너 내부에서 환경변수를 설정하는 것은 매우 중요함
환경변수를 통해 애플리케이션의 설정값을 동적으로 관리할 수 있으며, 이는 배포 및 운영 환경에서 매우 유용함
도커 컨테이너 내부에서 환경변수를 설정하는 여러 가지 방법이 있음
도커 컨테이너 실행 시점에 환경변수 설정하는 방법
1. docker run 명령어에 -e 옵션 사용
docker run -e MY_VAR=some_value my_image
2. docker run 명령어에 --env-file 옵션 사용
# .env 파일 예시
MY_VAR1=some_value1
MY_VAR2=some_value2
docker run --env-file .env my_image
도커 이미지 생성 시 환경변수 설정하는 방법
1. 도커파일에 ENV 지시어 사용
# Dockerfile 예시
FROM python:3.8-slim
ENV MY_VAR=some_value
2. 도커컴포즈 파일에서 환경변수 설정
# 환경변수 직접 설정
version: '3.8'
services:
my_service:
image: my_image
environment:
- MY_VAR=some_value
# .env 파일 사용
version: '3.8'
services:
my_service:
image: my_image
env_file:
- .env
3. 컨테이너 내부에서 스크립트를 사용하여 설정
# start.sh 예시
#!/bin/bash
export MY_VAR=some_value
exec "$@"
# Dockerfile 예시
FROM python:3.8-slim
COPY start.sh /start.sh
RUN chmod +x /start.sh
ENTRYPOINT ["/start.sh"]
CMD ["python", "app.py"]
exec "$@"에서 "$@"는 스크립트에 전달된 모든 인수를 의미함
위의 도커이미지로 도커컨테이너 실행 시 "docker run my_image python app.py" 라는 명령어를 수행했다면,
exec "$@" 는 exec python app.py 로 대체되어 동작함
4. 자주 변경되는 환경변수 도커파일 변경 없이 설정하는 방법
--build-arg를 활용하면 빌드 시점에 변수로 값을 주입할 수 있음
하지만 이는 빌드 과정에서만 사용되고 도커이미지 내에 환경변수로는 등록되지 않기 때문에, ENV 지시어를 사용해 도커이미지 환경변수로 등록해줘야 함
# Dockerfile 예시
FROM python:3.8-slim
# 빌드 시점 변수 받기
ARG MY_VAR
# 런타임 환경 변수로 등록
ENV MY_VAR=${MY_VAR}
RUN echo "MY_VAR is $MY_VAR"
docker build --build-arg MY_VAR=some_value -t my_image .
728x90
'Docker' 카테고리의 다른 글
도커 컨테이너로 web service 띄웠는데 로컬 브라우저에서 접속이 안되는 경우 (0) | 2023.06.09 |
---|