Open tonykang22 opened 2 years ago
# Comment
FROM busybox ENV FOO=/bar WORKDIR ${FOO} # WORKDIR /bar ADD . $FOO # ADD . /bar COPY \$FOO /quux # COPY $FOO /quux
ARG
docker build --build-arg
FROM busybox ARG user1 ARG buildno # ...
스코프에 대해 유의해야한다. 아래 예시 참고
FROM busybox USER ${user:-some_user} # user ARG 정의 전에 user ARG를 가져다가 사용 ARG user USER $user # ...
그렇기 때문에 아래와 같이 arguments를 넘겨주더라도 기본 값을 사용하게 된다.
$ docker build --build-arg user=what_user
--build-arg
FROM ubuntu ARG CONT_IMG_VER ENV CONT_IMG_VER=v1.0.0 RUN echo $CONT_IMG_VER
$ docker build --build-arg CONT_IMG_VER=v2.0.1 .
ENV
ENV는 Dockerfile 또는 컨테이너 안에서 환경 변수로 사용이 가능하고, ARG는 Dockerfile에서만 사용이 가능하다고 한다.
즉, ARG의 경우 Dockerfile 작성하는데에 필요한 변수를 선언하여 Dockerfile을 좀 더 편하게 작성하는데 사용할 수 있고,
ENV는 변수 선언은 물론, 컨테이너 안에서 사용할 환경 변수 등으로 사용할 수 있다.
참고 : https://vsupalov.com/docker-arg-vs-env/
npm install
docker build --force-rm -t nodejs-server .
curl localhost:8080
docker run -d -p8080:8080 nodejs-server
10. 도커 이미지 다루기 - Dockerfile
Dockerfile 문법
# Comment
와 같이 남길 수 있다.환경 변수 예시
Build Argument 전달
ARG
지시어를 통해 전달할 수 있다.docker build --build-arg
를 통해서 전달할 수 있다.스코프에 대해 유의해야한다. 아래 예시 참고
그렇기 때문에 아래와 같이 arguments를 넘겨주더라도 기본 값을 사용하게 된다.
--build-arg
를 넘기더라도 RUN instruction은 ENV의 v1.0.0을 사용하게 된다.추가 : ENV와 ARG 차이?
ENV
ARG
ENV는 Dockerfile 또는 컨테이너 안에서 환경 변수로 사용이 가능하고, ARG는 Dockerfile에서만 사용이 가능하다고 한다.
즉, ARG의 경우 Dockerfile 작성하는데에 필요한 변수를 선언하여 Dockerfile을 좀 더 편하게 작성하는데 사용할 수 있고,
ENV는 변수 선언은 물론, 컨테이너 안에서 사용할 환경 변수 등으로 사용할 수 있다.
참고 : https://vsupalov.com/docker-arg-vs-env/
실습
npm install
을 실행하게 된다.docker build --force-rm -t nodejs-server .
빌드한 후, 아래와 같이 실행해보았다.curl localhost:8080
시 작동하지 않는 것을 확인할 수 있다.docker run -d -p8080:8080 nodejs-server
를 실행하면 된다.그 외 지시어