Docker AGR 이용시 주의 점
이번 프로젝트에서 docker build 시 특정 값을 주입해서 사용하게 되었습니다.
아래와 같이 3개의 인자를 넘기는 build 실행 명령이 있을 경우, --build-arg
을 이용해서 Dockerfile에서 사용할 인자를 전달 합니다.
$ docker build --build-arg V_ACCOUNT_ID=${V_ACCOUNT_ID} --build-arg V_NEXUS_REGISTRY=${V_NEXUS_REGISTRY} --build-arg V_NEXUS_AUTH=${V_NEXUS_AUTH} -t ${V_CONTAINER_NAME}:${V_TAG_NAME} .
Dockerfile에서 인자를 사용할때는 FROM
기준으로 선언
해야 합니다.
Dockerfile 예제
# 여기서 선언한 AGR은 FROM 까지만 유효합니다
ARG V_ACCOUNT_ID
FROM ${V_ACCOUNT_ID}.dkr.ecr.ap-northeast-2.amazonaws.com/node:latest
# 여기에 AGR을 선언해야 아래에서 사용이 가능합니다.
ARG V_NEXUS_REGISTRY
ARG V_NEXUS_AUTH
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN echo "registry=${V_NEXUS_REGISTRY}" >> .npmrc
RUN echo "_auth=${V_NEXUS_AUTH}" >> .npmrc
RUN npm install --legacy-peer-deps
RUN npm audit fix --legacy-peer-deps
# Bundle app source
COPY . .
# build typescript
RUN npm run build
# Copy Entrypoint Script
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/sbin/init"]