docker compose up -d --build
448
작성한 질문수 1
안녕하세요!
[실습] AWS EC2에 Spring Boot 배포하기 수업을 듣다가 궁금한 점이 생겨서 질문드립니다.
이전의 강의에서
docker compose -d --build여기서 --build 옵션은 코드가 수정된 것을 실시간으로 반영하기 위해서 컨테이너를 띄울 때 마다 이미지를 매번 새롭게 빌드한다는 뜻이라고 하셨는데요
EC2에 스프링 부트를 배포할 때는
로컬에서 이미 빌드된 이미지를 ECR 에 push 하고, EC2에서는 그 이미지를 pull 땡겨서 사용하는데
컨테이너를 띄울 때 꼭 --build 옵션을 적어줘야 하는건가요?
수업하시면서 --build 옵션을 강조하셔서 그 부분이 헷갈려서 여쭤봅니당
또 비슷하게 한가지 궁금한건
compose.yml 파일에
build: . 이 아닌
image: <이미지명>
이 있을 땐 --build 옵션을 쓰지 않아도 되는걸까요?
답변 2
1
안녕하세요~ 질문 너무 잘 해주셨습니다 😄
강의 촬영 일정 때문에 답변을 늦게 드리게 됐네요ㅠㅠ!
바로 질문 주신 내용에 답변드릴게요!
compose.yml 파일에 build: . 이 아닌 image: <이미지명>이 있을 땐
--build 옵션을 쓰지 않아도 됩니다.
이전 강의에서 --build 옵션을 강조한 이유는
compose.yml 파일에 build . 옵션이 포함되어 있었기 때문입니다!
--build는 compose.yml에 build: 가 있을 때만 의미가 있습니다 !
image: 만 있을 경우에는 --build 옵션을 써도 무시가 됩니다 !!
혹시라도 추가로 궁금한 점이 있으시면 언제든지 댓글로 남겨주세요~~~ 😊
0
안녕하세요, 인프런 AI 인턴입니다. qrqrq23r님.
Docker Compose를 사용하여 애플리케이션을 배포할 때의 옵션 사용에 대한 질문을 주셨네요. 각 상황에 따라 다른 옵션을 사용할 수 있으며, 아래에서 자세히 설명드리겠습니다.
Docker Compose의 --build 옵션
--build옵션의 사용:docker compose up -d --build명령어는 이미지를 새로 빌드하는 과정이 필요할 때 사용합니다. 이 옵션은 주로 코드 변경 사항이 있을 때 사용되어, 애플리케이션을 다시 빌드하여 최신 변경 사항을 반영할 수 있도록 합니다.
- EC2와 같은 운영 환경에서 이미 빌드된 이미지를 사용할 경우, 일반적으로
--build옵션을 사용하지 않습니다. 대신 미리 빌드된 이미지를 ECR과 같은 레지스트리에 올려두고 이를 가져다 사용하는 방식을 취합니다.
--build옵션이 필요 없는 경우:- 이미지를 재사용할 때에는
--build옵션이 필요 없습니다.image: <이미지명>를docker-compose.yml파일에 정의하고, 해당 이미지를 pull 하여 컨테이너를 생성하면 됩니다. 이 경우,docker compose up -d명령어만 사용하시면 됩니다.
docker-compose.yml파일에build: .대신image: <이미지명>를 사용하면, 빌드 과정 없이 이미지를 바로 가져다 쓰게 됩니다. 이 방법이 더 효율적일 수 있습니다.
- 이미지를 재사용할 때에는
결론
구체적으로, AWS EC2에 배포할 때는 미리 빌드된 Docker 이미지를 활용하는 것이 일반적입니다. 이 경우 --build 옵션을 사용하지 않으셔도 됩니다. 또한, 운영 환경에서는 빠르고 안정적인 배포를 위해 사전에 검증된 이미지를 사용하는 것이 좋습니다. 이 방법은 코드를 다시 빌드하는 시간과 노력을 절약할 수 있습니다.
관련하여 유사한 질문과 답변을 확인 해보실 수 있도록 아래 링크를 추천드립니다:
- Docker에서 이미지 빌드 및 배포 자동화 전략 - 빌드 및 배포 설정에 대한 다양한 전략을 알아볼 수 있습니다.
- AWS 배포 시 docker-compose.yml 관리 - AWS 환경에서 Docker Compose 및 빌드 전략에 대한 자세한 설명이 포함되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
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





