inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자도 이해할 수 있는 Docker 입문/실전

[실습] AWS EC2에 Spring Boot 배포하기

docker compose up -d --build

448

qrqrq23r

작성한 질문수 1

1

안녕하세요!

[실습] AWS EC2에 Spring Boot 배포하기 수업을 듣다가 궁금한 점이 생겨서 질문드립니다.

이전의 강의에서

docker compose -d --build

여기서 --build 옵션은 코드가 수정된 것을 실시간으로 반영하기 위해서 컨테이너를 띄울 때 마다 이미지를 매번 새롭게 빌드한다는 뜻이라고 하셨는데요

EC2에 스프링 부트를 배포할 때는

로컬에서 이미 빌드된 이미지를 ECR 에 push 하고, EC2에서는 그 이미지를 pull 땡겨서 사용하는데

컨테이너를 띄울 때 꼭 --build 옵션을 적어줘야 하는건가요?

수업하시면서 --build 옵션을 강조하셔서 그 부분이 헷갈려서 여쭤봅니당

 

또 비슷하게 한가지 궁금한건

compose.yml 파일에

build: . 이 아닌

image: <이미지명>

이 있을 땐 --build 옵션을 쓰지 않아도 되는걸까요?

docker docker-compose docker-volume docker-image container ecr

답변 2

1

JSCODE 박재성

안녕하세요~ 질문 너무 잘 해주셨습니다 😄

강의 촬영 일정 때문에 답변을 늦게 드리게 됐네요ㅠㅠ!

바로 질문 주신 내용에 답변드릴게요!

 

compose.yml 파일에 build: . 이 아닌 image: <이미지명>이 있을 땐

--build 옵션을 쓰지 않아도 됩니다.

이전 강의에서 --build 옵션을 강조한 이유는

compose.yml 파일에 build . 옵션이 포함되어 있었기 때문입니다!

--build는 compose.yml에 build: 가 있을 때만 의미가 있습니다 !

image: 만 있을 경우에는 --build 옵션을 써도 무시가 됩니다 !!

 

혹시라도 추가로 궁금한 점이 있으시면 언제든지 댓글로 남겨주세요~~~ 😊

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. qrqrq23r님.

Docker Compose를 사용하여 애플리케이션을 배포할 때의 옵션 사용에 대한 질문을 주셨네요. 각 상황에 따라 다른 옵션을 사용할 수 있으며, 아래에서 자세히 설명드리겠습니다.

Docker Compose의 --build 옵션

  1. --build 옵션의 사용:

    • docker compose up -d --build 명령어는 이미지를 새로 빌드하는 과정이 필요할 때 사용합니다. 이 옵션은 주로 코드 변경 사항이 있을 때 사용되어, 애플리케이션을 다시 빌드하여 최신 변경 사항을 반영할 수 있도록 합니다.
    • EC2와 같은 운영 환경에서 이미 빌드된 이미지를 사용할 경우, 일반적으로 --build 옵션을 사용하지 않습니다. 대신 미리 빌드된 이미지를 ECR과 같은 레지스트리에 올려두고 이를 가져다 사용하는 방식을 취합니다.
  2. --build 옵션이 필요 없는 경우:

    • 이미지를 재사용할 때에는 --build 옵션이 필요 없습니다. image: <이미지명>docker-compose.yml 파일에 정의하고, 해당 이미지를 pull 하여 컨테이너를 생성하면 됩니다. 이 경우, docker compose up -d 명령어만 사용하시면 됩니다.
    • docker-compose.yml 파일에 build: . 대신 image: <이미지명>를 사용하면, 빌드 과정 없이 이미지를 바로 가져다 쓰게 됩니다. 이 방법이 더 효율적일 수 있습니다.

결론

구체적으로, AWS EC2에 배포할 때는 미리 빌드된 Docker 이미지를 활용하는 것이 일반적입니다. 이 경우 --build 옵션을 사용하지 않으셔도 됩니다. 또한, 운영 환경에서는 빠르고 안정적인 배포를 위해 사전에 검증된 이미지를 사용하는 것이 좋습니다. 이 방법은 코드를 다시 빌드하는 시간과 노력을 절약할 수 있습니다.

관련하여 유사한 질문과 답변을 확인 해보실 수 있도록 아래 링크를 추천드립니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

EC2 터미널에서 docker pull

0

64

2

AWS ECR

0

58

2

FROM openjdk:17-jdk 현재 기준 dockerhub에 없습니다

1

100

2

Redis 볼륨 설정?

0

117

2

컨테이너의 IP

0

80

2

도커 이미지를 만들 때 application.yml

0

105

2

compose.yml 관리

0

88

2

ECR 리포지토리에 이미지가 3개가 보입니다.

0

77

2

액세스 키 등록하는 시점 관련 질문이 있습니다.

0

83

1

depends_on에 따른 컨테이너 실행 순서

0

76

2

실제 웹 서비스 배포 시 질문

0

80

2

도커 volume 질문

0

67

3

HTTPS로도 받고 싶으면 docker compose에 443도 쓰면 될까요?

0

73

2

sql 볼륨 폴더 지우면 데이터베이스 데이터 날라가는거 아닌가요?

0

73

2

39강 도커파일 빌드 경로 질문이 있습니다.

0

70

2

도커파일 copy

0

70

2

실무에서 docker compose up --build를 할 때

0

187

2

mysql_data 폴더 내부에 다른 파일이 있는데도 잘 되는 경우

0

86

2

도커 허브에서 postgres 버전 확인하는 법

0

127

2

보충 자료와도 관련된 추가 내용

1

82

1

현업에서 MySQL은 RDS와 도커 볼륨 중 어떤 걸 사용하나요?

0

110

2

노션 자료에 안 보이는 이미지가 있습니다

0

101

1

도커 허브에서의 latest가 가장 최신인 게 맞나요?

0

121

2

docker image ls 실행 시 나오는 내용이 다릅니다

0

87

2