이번에 Docker Compose를 배포하기 위해 적용하다가 MySql하고 Redis Container가 정상적으로 구동이 되었지만 Spring Boot 어플리케이션과 서로 통신할 수 없는 상태가 되어 Spring Boot 어플리케이션을 실행할 수 없는 상황이 반복되었습니다. 이러한 문제를 겪고 있는 사람들에게 정보를 공유하고자 글을 작성하게 되었습니다.
version: '3.9'
services:
mysql:
image: mysql:latest
restart: always
environment:
MYSQL_DATABASE: mind_travel
MYSQL_ROOT_PASSWORD: 1234
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
redis:
image: redis:latest
restart: always
command: redis-server
ports:
- "6379:6379"
volumes:
- redis_data:/data
app:
build: .
restart: always
ports:
- "8080:8080"
depends_on:
- mysql
- redis
volumes:
db_data:
redis_data:
spring:
datasource:
url: jdbc:mysql://localhost/mind_travel
username: root
password: 1234
driver-class-name: com.mysql.cj.jdbc.Driver
messages:
basename: fcm-messages
encoding: UTF-8
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
format_sql: true
profiles:
include: oauth
logging.level:
org.hibernate.SQL: debug
일단 Docker 네트워크 부분에 대해 잘 알지 못해서 발생한 이슈였습니다. 기본적으로 Docker Compose를 실행하면 Docker Container는 별도의 가상 네트워크에서 동작하게 됩니다. 왜냐하면 이러한 가상 네트워크를 통해 컨테이너끼리 하나의 그룹으로 묶어 통신할 수 있기 때문입니다. 이러한 부분을 모르고 사용했기 때문에 해결하는데 많은 시간을 사용하게 되었습니다.
정상적으로 어플리케이션이 실행되서 로그인을 해보게 되었는데 이번엔 Redis가 연결이 되지 않았습니다.