도커에는 2가지 타입의 변수를 지원한다.
하나는 빌드 타임 인수
와 또 다른 하나는 런타임 환경 변수
이다.
빌트 타임 인수는 docker build를 통해 빌드를 할때 --build-arg 옵션을 통해 빌드시에 변수를 설정할 수 있다.
또한 런타임 환경 변수는 Dockerfile 내부에서 사용할 수 있으며, --env 옵션을 통해서 해당 환경 변수가 존재한다고 Docker에 알린다.
또한 docker run 명령어를 통해 해당 컨테이너를 실행할때 이런 환경 변수가 있다. 라는 것을 알릴 수 있다.
FROM node:18-alpine
RUN apk --no-cache add --virtual builds-deps build-base python
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
ENV PORT 80
EXPOSE $PORT
CMD ["npm", "start"]
이런식으로 Dockerfile 내에서 ENV 명령어를 통해 PORT라는 변수에 80이라는 값을 할당하고, $변수 를 통해서 해당 값을 사용해줄수 있다.
이런 경우에는 빌드 타임 인수
로서 사용해준다.
그게 아니라면 docker run --env PORT=80
처럼 도커 실행시에 값을 할당해줄수도있다.
환경변수가 많아서 .env에서 관리해준다면 docker run --env-file ./.env 이미지명
으로 아예 파일 자체를 실행시켜줄수 있다.
또한 .env는 보안에 관련한 값들이 들어있으므로 .dockerignore
에서 .env를 추가 해주어야한다.