일단 나는 프론트는 스벨트킷을 쓰고, 백엔드는 스프링부트를 쓴다.
지금껏 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

 
끝 ~ ! 

+ Recent posts