본문 바로가기

LINUX/Docker

Docker arguments 처리시 유의점

728x90

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"]

참고자료

태그