Docker

Docker로 프로젝트(Springboot), DB(Postgres), 캐시(Redis) 연동하기

pepega 2022. 7. 15. 20:33

취미생활로

프로젝트를 하나 시작했다.

 

아직 github에 push 하진 않았지만

 

시작 중 방법을 올려보려고 한다.

 

# Use postgres/example user/password credentials
version: '3'

services:
  goose-auth-api:
    image: gudrb963/goose-auth-api:latest
    container_name: goose-auth-api
    build:
      context: .
    ports:
      - 8080:8080
    depends_on:
      - postgres
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/gooseauth
      - SPRING_DATASOURCE_USERNAME=gooseauth
      - SPRING_DATASOURCE_PASSWORD=gooseauth
      - SPRING_JPA_HIBERNATE_DDL_AUTO=create

  postgres:
    image: postgres:13
    container_name: goose-auth-api-postgres
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: gooseauth
      POSTGRES_PASSWORD: gooseauth
      POSTGRES_DB: gooseauth
    volumes:
      - postgres-db-volume:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "gooseauth"]
      interval: 5s
      retries: 5
    restart: always

  redis:
    image: redis:latest
    container_name: goose-auth-api-redis
    ports:
      - 6379:6379
    expose:
      - 6379
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 30s
      retries: 50
    restart: always

volumes:
  postgres-db-volume:

 

docker-compose.yml

 

로 되어있다.

 

간단하게 설명하면

 

goose-auth-api : 내가 만든 프로젝트 (Springboot)

8080 포트를 사용한다.

실행하기 위해 환경을 설정한다. (datasource, jpa)

depends_on을 활용하여 DB 접속을 추가하였다.

 

postgres : 데이터베이스

5432 포트를 사용한다.

계정, 패스워드, 스키마를 설정한다.

healthcheck도 추가하였다.

 

redis : 캐시

6379 포트를 사용했다.

healthcheck도 추가하였다.

 

접속 툴은 p3x redis를 사용했다.

 

goose-auth-api는 jib으로 배포했다.

 

jib 사용법은 추후에 업로드 할 예정이다.