이전
여보야 런치 도커
dockerfile
## BUILDER
# 베이스 이미지로 gradle 7.3.1과 JDK 11 버전을 가지고 있는 이미지를 사용합니다
FROM gradle:7.3.1-jdk11 AS build
# 현재 위치의 모든 파일을 도커 컨테이너 내 /home/gradle/src 디렉토리에 복사합니다
COPY --chown=gradle:gradle . /home/gradle/src
# 도커에서 사용할 작업 디렉토리를 지정합니다
WORKDIR /home/gradle/src
# Gradle을 이용해 빌드를 수행하며, 데몬을 사용하지 않거나(test 제외) 빌드를 수행합니다
RUN gradle build --no-daemon -x test
## RUNNING
# 베이스 이미지로 adoptopenjdk의 11버전 jdk-hotspot 런타임을 사용합니다
FROM adoptopenjdk:11-jdk-hotspot
# 이미지를 유지보수하는 사람의 정보를 레이블 형식으로 명시합니다
LABEL maintainer="khjzzm@gmail.com"
# 컨테이너의 4463 포트를 이용하도록 설정합니다
EXPOSE 4463
# 이전 BUILDER 단계에서 빌드된 jar 파일을 app 디렉토리에 복사합니다
COPY --from=build /home/gradle/src/build/libs/*.jar /app/app.jar
# Docker 컨테이너가 생성되었을 때 실행될 명령어를 정의합니다
# 여기서는 자바 애플리케이션을 실행하는 java -jar command 를 정의하고 있습니다
# Spring 프로파일 환경변수로 "SERVER_MODE"값을 이용하며 /app/app.jar를 실행합니다
ENTRYPOINT [ \
"java", \
"-Dspring.profiles.active=${SERVER_MODE}", \
"-jar", \
"/app/app.jar" \
]
container
- 이미지: khjzzm/yeoboya-lunch-api:latest
- 컨테이너 이름: lunch-container
- 포트 매핑: 호스트의 4463 포트를 컨테이너의 4463 포트에 연결
- 볼륨 매핑: 로컬 경로 /Users/hyunjinkim/.aws를 컨테이너의 /root/.aws 경로에 연결
- 환경 변수: SERVER_MODE를 prod로 설정
docker run -d --name lunch-container -p 4463:4463 -v /Users/hyunjinkim/.aws:/root/.aws -e SERVER_MODE=prod khjzzm/yeoboya-lunch-api:latest
- docker run: 새 컨테이너를 실행하는 명령어입니다.
- -d: 컨테이너를 백그라운드에서 실행합니다(분리된 모드).
- –name lunch-container: lunch-container라는 이름을 컨테이너에 할당합니다.
- -p 4463:4463: 호스트의 4463 포트와 컨테이너의 4463 포트를 매핑합니다.
- -v /Users/hyunjinkim/.aws:/root/.aws: 호스트의 /Users/hyunjinkim/.aws 경로를 컨테이너의 /root/.aws 경로에 볼륨으로 마운트합니다.
- -e SERVER_MODE=prod: 컨테이너 내부에서 SERVER_MODE 환경 변수를 prod 값으로 설정합니다.
- khjzzm/yeoboya-lunch-api:latest: 컨테이너에 사용할 이미지를 지정합니다.
ECS 에 Docker 이미지 push (Private registry)
- Amazon Elastic Container Registry 생성
-
aws ecr get-login-password –region ap-northeast-2 docker login –username AWS –password-stdin 133988310128.dkr.ecr.ap-northeast-2.amazonaws.com - IAM AmazonEC2ContainerRegistryFullAccess
- docker tag khjzzm/yeoboya-lunch-api:latest 133988310128.dkr.ecr.ap-northeast-2.amazonaws.com/yeoboya-lunch-repository
- Docker 이미지 태깅
- docker push 133988310128.dkr.ecr.ap-northeast-2.amazonaws.com/yeoboya-lunch-repository:latest
- 이미지 푸시
Amazon Elastic Container Service
- 클러스터 생성 - AWS Fargate(서버리스)
- 태스크 정의 — 막힘..