docker와 친해지기 위해서 기존에 jar파일을 ec2에 올려놓고 사용하던 방식에서 docker를 이용하는 방식으로 변경하려고 한다.
FROM openjdk:17
ARG JAR_FILE=build/libs/fxteam-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
Dockerfile은 위와 같이 구성하였고 이를 이미지로 빌드하기 위해
docker build --platform linux/amd64 -t fxteam:1.0 .
위와 같은 빌드 명령어를 실행하였다.
--plateform linux/arm64 명령어는 현재 m1 mac을 사용중에 있는데 m1 mac에서 빌드하게 될 경우 자동으로 platform이 linux/arm64로 설정되게 된다.
하지만 amazonlinux OS를 사용하는 AWS EC2의 경우에 linux/amd64이기 때문에 m1에서 빌드한 이미지를 ec2에서도 사용하기 위해서는 위의 명령어를 같이 넣어줘야 한다.
빌드를 완료하고
docker images
위의 명령어를 통해서 이미지가 잘 생성되었는지 확인해보면
이미지가 잘 생성된걸 볼 수 있다!
이제 생성된 이미지를
docker run fxteam:1.0
위의 명령어를 통해 실행해보면
잘 실행되는것을 볼 수 있다.
하지만 포스트맨에서 API 테스트(localhost)를 해보면 요청이 보내지지 않는다.
이때는
// 아래의 두 코드를 합친게 run 명령어 (컨테이너를 만들고 실행)
docker run --name FXTEAM_SERVER -p 8080:8080 fxteam:1.0
// 컨테이너 생성
docker create --name FXTEAM_SERVER -p 8080:8080 fxmtea:1.0
// 컨테이너 실행
docker start FXTEAM_SERVER
-p 옵션을 사용하여서 호스트머신(localhost 기준 로컬 컴퓨터)의 8080요청을 컨테이너 내의 8080 포트로 연결해주면 docker 컨테이너 안에 있는 스프링부트에 연결된다.
'스프링부트 > 트러블 슈팅' 카테고리의 다른 글
[Docker] Springboot 3.X 와 Redis 그리고 docker... (1) | 2024.02.18 |
---|---|
[Docker] dockerhub에 push가 왜 안되니? (0) | 2024.02.15 |
Attempt to recreate a file for type 오류 해결하기 (0) | 2024.01.09 |
@Value 이거 왜 주입 안돼? (0) | 2023.11.29 |
스프링부트 3.x 버전의 Mail API 사용 (0) | 2023.11.29 |