
이전 포스트들과 이어집니다
1. [Spring/WebSocket] 순수 WebSocket으로 채팅방 만들기
2. [Spring/WebSocket] WebSocket + STOMP으로 귓속말 가능한 채팅방 만들기
이전 WebSocket + STOMP 실습 파일을 가지고 Docker compose를 이용해 이미지와 컨테이너 생성 후 서버를 띄워보자. (로드밸런싱)
spring.application.name=backendProject
spring.datasource.url=jdbc:mysql://database:3306/backend?serverTimezone=Asia/Seoul&characterEncoding=UTF-8&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=1234
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.hibernate.ddl-auto=update
services:
database:
image: mysql:8
container_name: database
ports:
- "3307:3306"
environment:
MYSQL_DATABASE: backend
MYSQL_ROOT_PASSWORD: 1234
volumes:
- ./volumes/mysql-data:/var/lib/mysql #내가 지정한 경로
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", '-u', 'root', '-p$$MYSQL_ROOT_PASSWORD']
timeout: 20s
retries: 10
backend1: # 서비스 이름은 컨테이너간 통신하기 위한 이름
image: backend
container_name: backend1
environment:
PROJECT_NAME: 백앤드 서버1
depends_on:
database:
condition: service_healthy
backend2: # 서비스 이름은 컨테이너간 통신하기 위한 이름
image: backend
container_name: backend2
environment:
PROJECT_NAME: 백앤드 서버2
depends_on:
database:
condition: service_healthy
backend3: # 서비스 이름은 컨테이너간 통신하기 위한 이름
image: backend
container_name: backend3
environment:
PROJECT_NAME: 백앤드 서버3
depends_on:
database:
condition: service_healthy
nginx:
image: nginx:1.25
container_name: nginx
ports:
- "80:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- backend1
- backend2
- backend3
location /ws-chat {
proxy_pass http://spring_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
@Value("${PROJECT_NAME:web server}")
private String instansName;
template.convertAndSend("/topic/"+message.getRoomId(), instansName + " " + message);






