MSA 프로젝트 배포

송형근·2024년 9월 2일
0

TIL

목록 보기
27/43
post-thumbnail

프로젝트 구성

  • Eureka Server
  • Gateway Server
  • Service Server
  • Auth Server

사전 준비

  • EC2 Server
    • 프리티어의 경우 Swap Memory를 넉넉하게 설정 필요
    • Docker 설치
    • Docker-compose 설치
  • 각 서버 Image Build & Push

docker-compose.yaml

version: "3"

services:
  blue_eureka:
    container_name: blue_eureka
    image: docker.io/pudingles94/ai_blue_eureka:latest
    ports:
      - "19090:19090"
    environment:
      TZ: "Asia/Seoul"
      EUREKA_SERVICE_URL: "http://host.docker.internal:19090/eureka/"
      EUREKA_SERVER_HOST: "localhost"
    restart: always
    extra_hosts:
    - "host.docker.internal:host-gateway"
  blue_gateway:
    container_name: blue_gateway
    image: docker.io/pudingles94/ai_blue_gateway:latest
    ports:
      - "19091:19091"
    depends_on:
      - blue_eureka
    environment:
      TZ: "Asia/Seoul"
      REDIS_HOST: "host.docker.internal"
      REDIS_PORT: "6379"
      REDIS_PASS: "{REDIS_PASS}"
      SERVER_HOST: "host.docker.internal"
      GATEWAY_PORT: "19091"
      SERVER_SWAGGER_HOST: "{SERVER_SWAGGER_HOST}"
    restart: always
    extra_hosts:
    - "host.docker.internal:host-gateway"
  blue_service:
    container_name: blue_service
    image: docker.io/pudingles94/ai_blue_service:latest
    ports:
      - "19092:19092"
    depends_on:
      - blue_eureka
    environment:
      TZ: "Asia/Seoul"
      POSTGRESQL_HOST: "{POSTGRESQL_HOST}"
      POSTGRESQL_PORT: "5432"
      POSTGRESQL_ID: "{POSTGRESQL_ID}"
      POSTGRESQL_PASS: "{POSTGRESQL_PASS}"
      REDIS_HOST: "host.docker.internal"
      REDIS_PORT: "6379"
      REDIS_PASS: "{REDIS_PASS}"
      SERVER_HOST: "host.docker.internal"
      GATEWAY_PORT: "19091"
      SERVER_SWAGGER_HOST: "{SERVER_SWAGGER_HOST}"
    restart: always
    extra_hosts:
    - "host.docker.internal:host-gateway"
  blue_auth:
    container_name: blue_auth
    image: docker.io/pudingles94/ai_blue_auth:latest
    ports:
      - "19093:19093"
    depends_on:
      - blue_eureka
    environment:
      TZ: "Asia/Seoul"
      POSTGRESQL_HOST: "{POSTGRESQL_HOST}"
      POSTGRESQL_PORT: "5432"
      POSTGRESQL_ID: "{POSTGRESQL_ID}"
      POSTGRESQL_PASS: "{POSTGRESQL_PASS}"
      REDIS_HOST: "host.docker.internal"
      REDIS_PORT: "6379"
      REDIS_PASS: "{REDIS_PASS}"
      SERVER_HOST: "host.docker.internal"
      GATEWAY_PORT: "19091"
      SERVER_SWAGGER_HOST: "{SERVER_SWAGGER_HOST}"
    restart: always
    extra_hosts:
    - "host.docker.internal:host-gateway"
  • docker-compose로 network을 지정하지 않은 상태로 up을 하게 되면, 디렉토리명으로 자동으로 네트워크가 생성되고 모든 컨테이너는 해당 네트워크를 사용함
  • 각 서비스에서 도커 내부 네트워크로 요청을 주고받기 위해 extra_hostshost.docker.internal을 추가해줌
  • Swagger의 경우 서버의 Public Host로 접근하게 되므로 SERVER_SWAGGER_HOST에 public 호스트를 입력해줌
    • SERVER_SWAGGER_HOST를 cors 설정에 추가하도록 해뒀음

EC2 설정

  • 보안그룹 설정 Inbound에서 Gateway Server의 Port만을 열어줌
    • 타 서비스는 외부에서 접근하지 못하도록 하기 위함
  • Ubuntu의 경우 ufw allow를 통해 gateway server의 port를 허용해줘야 함
profile
기록을 남겨보자

0개의 댓글