1. 도커파일 작성
multi-stage 빌드를 사용하여 프론트엔드 애플리케이션을 빌드하고 배포하는 과정 작
ARG APP_NAME=""
FROM node:18-slim AS builder
WORKDIR /tmp/workspace
ARG APP_NAME
ENV BASE_PATH="${APP_NAME}"
ADD component component
ADD console-app console-app
COPY package.json ./package.json
COPY yarn.lock ./yarn.lock
RUN yarn install
RUN yarn workspace console-app build
FROM node:18-slim AS builder
WORKDIR /tmp/workspace
ARG APP_NAME
ENV BASE_PATH="${APP_NAME}"
ADD component component
ADD console-app console-app
COPY package.json ./package.json
COPY yarn.lock ./yarn.lock
RUN yarn install
RUN yarn workspace console-app build
---- 빌더스테이지('builder') ---- 스테이지에서는 프로젝트의 소스 코드를 추가하고 필요한 의존성 설치한 뒤 빌드를 실
FROM node:18-slim as deploy
WORKDIR /tmp/workspace
COPY --from=builder /tmp/workspace/component/src ./component/src
COPY --from=builder /tmp/workspace/component/public ./component/public
COPY --from=builder /tmp/workspace/component/package.json ./component/
COPY --from=builder /tmp/workspace/console-app/public ./console-app/public
COPY --from=builder /tmp/workspace/console-app/.next ./console-app/.next
COPY --from=builder \
/tmp/workspace/console-app/package.json \
/tmp/workspace/console-app/next.config.js \
/tmp/workspace/console-app/.env.* \
./console-app/
COPY --from=builder /tmp/workspace/package.json ./package.json
COPY --from=builder /tmp/workspace/yarn.lock ./yarn.lock
RUN yarn install --production
배포 스테이지 ('deploy') 서브모듈 컴포넌트왕 콘솔앱의 필요 파일 복사 필요한 의존성만 설치
FROM node:18-alpine AS runner
WORKDIR /var/run/sugarbricks
ARG APP_NAME
ENV NODE_ENV production
ENV BASE_PATH="${APP_NAME}"
#ENV NEXT_TELEMETRY_DISABLED 1
COPY --from=deploy /tmp/workspace/ ./
EXPOSE 3000
CMD ["yarn", "workspace", "console-app", "start"]
실행 스테이지 최종 실행 이미지 정의 애플리케이션 실행
.dockerignore 파일 생성 후 불필요한 디렉터리나 파일 제외 하기 위해 추가 한다.
도커 허브 가입 후
도커 repository 생성
생성 후
도커파일이 있는 디렉터리에서 명령어 실행
docker build -t your-dockerhub-username/your-image-name:latest .
도커 cli 를 통해 허브 로그인
도커 허브에 푸시
docker push your-dockerhub-username/your-image-name:tag
docker run -d -p 8080:80 --name my-container -e "NODE_ENV=production" my-image:tag
위에는 참고로 실행하는명령어 도커 로컬에서 실행 하면 된다.
'DevOps > docker' 카테고리의 다른 글
리눅스 서버 도커 컨테이너 실행 (0) | 2025.02.13 |
---|