일단 나는 프론트는 스벨트킷을 쓰고, 백엔드는 스프링부트를 쓴다.
지금껏 Docker-compose 쓰는 것도, 설치하는 것도 귀찮아서 각각 따로 빌드하고, 푸쉬했는 데,
관리해야할 프로젝트가 많아지니 여간 귀찮은 게 아니다.
한번에 빌드 & 배포하는 것을 살펴보자.
1. 내 노트북의 지정한 경로에 deployment 폴더 생성, 하위폴더에 docker-compose.yml 파일 생성
해당 파일에 아래 스크립트 작성
version: "3.8"
services:
java_rack:
platform: "linux/amd64"
build:
context: "../spring_program/java_rack2"
dockerfile: "Dockerfile"
image: "ID/레포지토리명:latest"
restart: unless-stopped
ports:
- "8081:8081"
iot_rack:
platform: "linux/amd64"
build:
context: "../svelte_program/iot_rack"
dockerfile: "Dockerfile"
image: "ID/레포지토리명:latest"
restart: unless-stopped
ports:
- "3002:3002"
networks:
default:
driver: "bridge"
상황에 따라 특정 레포지토리가 선행되고 실행하는 depends_on, 프로젝트별 설정파일이 없을 경우 사용하는 env_file 등은
각각 설정해보기로 한다.
사실 저것만 있으면 빌드만 되고, docker hub에 push를 해주진 않는다. 애석하게도 docker-compose에 자체 푸쉬기능은 없다.
그런경우를 대비해서, 별도 명령어 파일을 만들고 실행 시켜준다. 나의 경우 맥북에서 실행하므로, 아래 파일을 생성시켜준다.
2. docker-compose가 있는 경로에 deploy.sh 생성후, 아래 스크립트 기재
#!/usr/bin/env bash
set -euo pipefail
# (1) 빌드
echo "🛠️ Building images..."
docker-compose build
# (2) 푸시
echo "📤 Pushing images..."
# 서비스별로 image 이름을 지정
# docker-compose.yml 에 지정한 image 키와 동일해야 합니다.
docker push 계정명/레포지토리명:latest
docker push 계정명/레포지토리명:latest
echo "✅ Build & Push 완료"
3. docker-compose 실행
docker compose build
4. deploy.sh 실행
./deploy.sh
자.. 이제까지는 내 노트북에서 실행하던 환경이다. 이제 서버에서 push 받는 것도 한번에 받고, 한번에 실행하자.
5. 서버접근, docker pull 받기
docker compose pull
6. docker pull 받고, 실행하기
docker compose up -d
끝 ~ !
'Docker' 카테고리의 다른 글
| [Docker] Spring Boot build 및 서버 배포 (1) | 2025.02.17 |
|---|---|
| [Docker] Next.js build 및 서버 배포 (0) | 2025.02.17 |
| [Docker] Image별 삭제, 태그네임 삭제,전체 삭제 (0) | 2025.02.17 |
| [Docker] curl (56) Recv failure: Connection reset by peer (0) | 2025.02.14 |
| [Docker] 도커 자동 재시작 및 로그인 설정 (0) | 2025.02.14 |