쇼핑몰 - 2 [Docker-compose 사용하기]

2024. 11. 3. 15:40·Java/쇼핑몰

✅ 이전 포스팅

2024.11.01 - [Java/쇼핑몰] - 쇼핑몰 만들기 - 1 [AWS EC2로 배포 서버 만들기]

 

쇼핑몰 만들기 - 1 [AWS EC2로 배포 서버 만들기]

✅ 동기예에에에에에전에 만들었던 허접한 게시판을 뒤로하고 별다른 프로젝트를 진행하지 않았는데이번에야말로 다른 프로젝트를 만들어보자 다짐하고 프론트를 담당해 주실 분을 모시고 프

magicmk.tistory.com

 

이전 글에서는 클라우드 서버로 AWS를 선택한 뒤 EC2 인스턴스를 생성하는 것을 알아보았다.

이번 포스팅에서는 ec2에 docker-compose를 이용해 was, db, redis를 배포하는 방법을 알아본다.

생성한 ec2 인스턴스에 ssh로 접근하는 방법은 별도로 설명하지 않고 진행합니다.


✅ Docker 및 Docker-compose 설치

🟨 Docker

아래에 작성한 명령어를 차례대로 입력하면 된다.

1️⃣ Ubuntu 패키지 업데이트

sudo apt-get update

 

2️⃣ 필요한 패키지 설치

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

 

3️⃣ Docker 공식 GPG키 추가

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

 

4️⃣ Docker 공식 apt 저장소 추가

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

 

5️⃣ Ubuntu 패키지 업데이트

sudo apt-get update

 

6️⃣ Docker 설치

sudo apt-get install docker-ce docker-ce-cli containerd.io

 

7️⃣ 설치 확인

sudo systemctl status docker

 

🟨 Docker-Compose

Docker-Compose를 설치하기 전에 Docker를 먼저 설치하여 패키지들을 업데이트하고 GPG키와 레포를

만들고 와야 한다.

1️⃣ Docker-Compose 설치

sudo curl -L "https://github.com/docker/compose/releases/download/2.29.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

위 명령어에서 "2.29.5"라고 되어 있는 부분을 원하는 버전으로 변경하여 입력하면 된다.

https://github.com/docker/compose/releases

 

Releases · docker/compose

Define and run multi-container applications with Docker - docker/compose

github.com

최신 버전은 위 주소에서 확인할 수 있다.

 

2️⃣ 권한 부여

sudo chmod +x /usr/local/bin/docker-compose

 

3️⃣ 링크 설정

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

 

4️⃣ 버전 확인

docker-compose --version

✅ Docker-compose 실행

🟨 docker-compose.yml 작성

docker-compose는 docker-compose.yml 파일을 작성함으로 모든 준비가 마무리 된다.

파일의 위치는 어디든 상관없으나 나는 ~/compose/docker-compose.yml로 지정하였다.

version: '3.8'

services:
  redis:
    image: redis
    container_name: docker_redis
    ports:
      - "6379:6379"
    environment:
      - REDIS_HOST=${REDIS_HOST}
      - REDIS_PORT=${REDIS_PORT}

  postgres:
    image: postgres
    container_name: docker_postgres
    environment:
      - POSTGRES_USER=${DB_USER_NAME}
      - POSTGRES_PASSWORD=${DB_USER_PASSWORD}
      - POSTGRES_DB=shop
      - TZ=Asia/Seoul
    ports:
      - "5432:5432"
    volumes:
      - db_data:/var/lib/postgresql/data

  shop_was:
    image: rlaalsrl9569/shop_was:${SHOP_WAS_TAG}
    container_name: docker_shop_was
    depends_on:
      - postgres
      - redis
    ports:
      - "8080:8080"
    environment:
      - DB_URL=${DB_URL}
      - DB_USER_NAME=${DB_USER_NAME}
      - DB_USER_PASSWORD=${DB_USER_PASSWORD}
      - LOCAL_DB_URL=${LOCAL_DB_URL}
      - LOCAL_DB_USER_NAME=${LOCAL_DB_USER_NAME}
      - LOCAL_DB_USER_PASSWORD=${LOCAL_DB_USER_PASSWORD}
      - JWT_KEY=${JWT_KEY}
      - A_EX_TIME=${A_EX_TIME}
      - R_EX_TIME=${R_EX_TIME}
      - REDIS_HOST=${REDIS_HOST}
      - REDIS_PORT=${REDIS_PORT}
      - SHOP_WAS_TAG=${SHOP_WAS_TAG}

volumes:
  db_data:

 

서버에 .env 파일을 가지고 있다면 docker-compose.yml에서 환경변수를 위와 같이 넣어줄 수 있다.

내용이 복잡해 보이지만 Docker를 설치하여 이미지를 이용해 컨테이너를 만들어 본 사람이라면

각 내용들이 무엇을 뜻하는지 알 수 있을 것 같다.

 

🟨 docker-compose 실행

sudo docker-compose up -d

 

위 명령어를 통해 docker-compose를 실행시키면 was, db, redis를 한 번에 구동시킬 수 있다.

 

docker containers

위 사진처럼 컨테이너가 같이 생성되어 동작하는 것을 볼 수 있다.


✅ 마무리

기존에 Docker를 이용해 여러 번 서비스를 올려봤지만 항상 개별적으로 컨트롤 해왔었는데

Docker-Compose를 이용하니 엄청 손쉽게 여러 컨테이너를 한 번에 컨트롤 할 수 있어서 신기했다.

다음 포스팅은 GitHub Actions를 통해 프로젝트 빌드부터 ec2 배포까지 CI/CD 하는 것을 작성하도록 하겠다.

 

https://github.com/sideProject-org/shop-back

 

GitHub - sideProject-org/shop-back: 쇼핑몰 서버

쇼핑몰 서버. Contribute to sideProject-org/shop-back development by creating an account on GitHub.

github.com

 

저작자표시 비영리 (새창열림)

'Java > 쇼핑몰' 카테고리의 다른 글

쇼핑몰 - 6 [Spring Security + JWT + OAuth2 + Redis]  (2) 2024.12.02
쇼핑몰 - 5 [spring security + JWT + Redis 로그인]  (0) 2024.11.19
쇼핑몰 - 4 [회원 가입 구현]  (0) 2024.11.12
쇼핑몰 - 3 [GitHub Actions를 통한 CI/CD]  (3) 2024.11.06
쇼핑몰 만들기 - 1 [AWS EC2로 배포 서버 만들기]  (3) 2024.11.01
'Java/쇼핑몰' 카테고리의 다른 글
  • 쇼핑몰 - 5 [spring security + JWT + Redis 로그인]
  • 쇼핑몰 - 4 [회원 가입 구현]
  • 쇼핑몰 - 3 [GitHub Actions를 통한 CI/CD]
  • 쇼핑몰 만들기 - 1 [AWS EC2로 배포 서버 만들기]
요술공주밍키
요술공주밍키
조금씩이라도 꾸준히..
  • 요술공주밍키
    삽질의흔적
    요술공주밍키
  • 전체
    오늘
    어제
    • 분류 전체보기 (139)
      • Java (42)
        • Spring Boot (14)
        • Spring Boot 게시판 (14)
        • 공중화장실 찾기 (4)
        • 쇼핑몰 (8)
      • JavaScript (8)
        • NodeJS (2)
      • Python (5)
        • Django (4)
      • Server (10)
        • Docker (4)
        • K8S (0)
        • Jenkins (1)
      • 알고리즘 (24)
        • 프로그래머스 (19)
        • 백준 (5)
      • Etc (21)
        • 개발 팁 (1)
      • 일상 (27)
        • 독서 포스트 (25)
        • 회고록 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
요술공주밍키
쇼핑몰 - 2 [Docker-compose 사용하기]
상단으로

티스토리툴바