Docker 입문
Tim Sangster
Software Engineer @ DataCamp
Dockerfile에서 변수 만들기
ARG <var_name>=<var_value>
예: ARG path=/home/repl
Dockerfile에서 사용
$path
예: COPY /local/path $path
Python 버전 설정
FROM ubuntu
ARG python_version=3.9.7-1+bionic1
RUN apt-get install python3=$python_version
RUN apt-get install python3-dev=$python_version
폴더 구성
FROM ubuntu
ARG project_folder=/projects/pipeline_v3
COPY /local/project/files $project_folder
COPY /local/project/test_files $project_folder/tests
FROM ubuntu
ARG project_folder=/projects/pipeline_v3
COPY /local/project/files $project_folder
COPY /local/project/test_files $project_folder/tests
빌드 명령에서 변수 설정
docker build --build-arg project_folder=/repl/pipeline .
ARG가 덮어써져 파일 위치:
COPY /local/project/files /repl/pipeline
COPY /local/project/test_files /repl/pipeline/tests
Dockerfile에서 변수 만들기
ENV <var_name>=<var_value>
예: ENV DB_USER=pipeline_user
Dockerfile 또는 런타임에서 사용
$DB_USER
예: CMD psql -U $DB_USER
런타임에 사용할 디렉터리 설정
ENV DATA_DIR=/usr/local/var/postgres
ENV MODE production
런타임에 변수 설정/대체
docker run --env <key>=<value> <image-name>
docker run --env POSTGRES_USER=test_db --env POSTGRES_PASSWORD=test_db postgres
docker history <image-name>
ARG DB_PASSWORD=example_password
docker history에 표시됨:
IMAGE CREATED CREATED BY SIZE ...
cd338027297f 2 months ago ARG DB_PASSWORD=example_password 0B ...
| 용도 | Dockerfile 지시문 |
|---|---|
| 빌드 중에만 접근 가능한 변수 생성 | ARG <name>=<value> |
| 변수 생성 | ENV <name>=<value> |
| 용도 | 셸 명령 |
|---|---|
| docker build에서 ARG 덮어쓰기 | docker build --build-arg <name>=<value> |
| docker run에서 ENV 덮어쓰기 | docker run --env <name>=<value> <image-name> |
| 이미지를 만든 지시문 확인 | docker history <image-name> |
Docker 입문