개요
배포 서버에서 redis와 백엔드 컨테이너가 통신하려면 같은 docker group으로 묶어줘야 서로 통신이 가능하다.
docker-compose란?
도커 컴포즈는 단일 서버에서 여러 컨테이너를 하나의 서비스로 정의해 컨테이너 묶음으로 관리할 수 있도록 환경을 제공하는 도구이다. 도커 컴포즈는 yml 파일로 여러 개의 컨테이너의 실행을 한 번에 관리한다.
따라서 여러 컨테이너를 사용할 때는 도커 컴포즈로 하나의 그룹으로 묶어 통신을 해줘야 한다.
진행 과정
도커 컴포즈를 설치해주고 백엔드 EC2 서버에 ssh 접속으로 연결을 해주고 루트에 docker-compose.yml 파일을 만들어준다.
ubuntu@ip-...:~$ ls -al
total 3476
drwxr-x--- 8 ubuntu ubuntu 4096 Jun 22 10:04 .
drwxr-xr-x 3 root root 4096 Apr 9 17:03 ..
drwx------ 3 ubuntu ubuntu 4096 May 25 15:16 .docker
-rw-rw-r-- 1 ubuntu ubuntu 1322 Jun 22 10:04 .env
drwx------ 2 ubuntu ubuntu 4096 Apr 30 01:26 .ssh
-rw-rw-r-- 1 ubuntu ubuntu 379 May 27 03:13 docker-compose.yml
version: "3.0"
services:
web:
image: {도커 id}/{백엔드 도커 이미지}:latest
container_name: {백엔드 도커 컨테이너}
ports:
- "8080:8080"
depends_on:
- redis
env_file: .env
redis:
image: redis:alpine
container_name: {redis 도커 컨테이너}
command: redis-server --port 6379
hostname: {redis 도커 컨테이너와 동일}
ports:
- "6379:6379"
- docker-compose.yml 파일 작성할 때 container_name과 hostname을 동일하게 해줘야 하고, 스프링 부트의 application.yml 파일에도 host를 container_name과 동일하게 맞춰줘야 그룹에서 통신이 가능하다.
- 백엔드 서버에서 사용하는 환경변수는 백엔드 EC2 루트에 .env로 생성하고, ` env_file: .env ` 로 환경변수 주입을 해준다.
'인프라' 카테고리의 다른 글
[AWS,Docker] No space left on device 오류 + cron으로 docker미사용 컨테이너 삭제 (0) | 2024.09.22 |
---|---|
[인프라] Vue.js, React 배포 이후 새로고침하면 404 Not Found (0) | 2024.07.11 |
[AWS] 로드밸런서, 도메인 없이 EC2 서버 HTTPS 연결 (3) | 2024.07.03 |
[Jenkins] 젠킨스 Built-In Node 오프라인 문제 (0) | 2024.06.26 |
[AWS, Docker, Jenkins] 도커 + 젠킨스 + EC2 로 CICD 구축 후 배포하기 (0) | 2024.06.26 |