🐳 Docker
AWS EC2에 .env 파일로 Docker 환경변수 관리하기 (feat. docker-compose)
MNY
2024. 10. 3. 15:05
728x90
반응형
Keyword
1. docker-compose envfile
env 파일을 나누는 이유는?
이전의 백엔드 배포 로컬의 인텔리제이에서 docker 이미지를 만들었기 때문에 properties-secrets.yml이 포함되어 이미지가 만들어졌다. 이렇게 되면 public 도커허브에 올려놓은 이미지를 받아서 환경변수를 볼 수 있다. 그럼 보안상 문제가 생긴다. 또한, 환경변수가 도커 이미지에 들어가 있다면 CI/CD에서 환경변수 변경 시 매번 도커 이미지를 다시 만들어서 EC2에서 도커 이미지를 받은 다음 실행시켜야 하는 번거로움이 존재한다. 그래서 추후 CI/CD를 위해서도 환경변수는 분리해 놓아야 관리가 편하기 때문에 env 파일로 분리할 것이다.
.env 파일 생성
* 해당 과정은 EC2 인스턴스에서 진행
EC2 인스턴스에 접속
.env 파일 생성:
- env 파일을 생성할 디렉토리 만들기
mkdir config // 앞으로 해당 디렉토리는 환경변수 저장
cd config // config 디렉토리로 이동
vi .env // .env 파일 생성
i // 작성 모드
// .env 파일 내용
// 띄어쓰기가 없어야 함!
POSTGRES_URL= // ex: jdbc:postgresql://today-space-db:5432/space
POSTGRES_DB= // ex: space
POSTGRES_USER= // 작성
POSTGRES_PASSWORD= // 작성
JWT_SECRET_KEY= // 작성
JWT_ACCESS_TOKEN_EXPIRATION= // 작성
JWT_REFRESH_TOKEN_EXPIRATION= // 작성
------------------------------------------------------------------------------------
ESC(버튼) + :wq // 작성 모드 종료 후 저장하고 나가기
w // 저장
q // 나가기
docker - compose 업데이트
* 해당 과정은 EC2 인스턴스에서 진행
docker-compose 경로로 이동
- 경로 이동
// 현재 경로가 /config라는 가정 하에 진행
// 아래 명령어 선택해서 사용할 것
cd .. // 상위 디렉토리로 이동
cd - // 이전 디렉토리로 이동
docker-compose 업데이트
- docker-compose 업데이트
vi docker-compose.yml // app.conf 파일 작성하기
i // 작성 모드
// docker-compose.yml 파일 내용
version: '3.8'
services:
app:
image: today-space-back:latest
container_name: today-space-back
env_file:
- ./config/.env
ports:
- "8080:8080"
depends_on:
- db
db:
image: postgres:14
container_name: today-space-db
env_file:
- ./config/.env
volumes:
- db_data:/var/lib/postgresql/data
ports:
- "5432:5432"
nginx:
image: nginx:latest
container_name: today-space-nginx
ports:
- "80:80"
volumes:
- ./data/nginx/app.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
volumes:
db_data:
------------------------------------------------------------------------------------
ESC(버튼) + :wq // 작성 모드 종료 후 저장하고 나가기
w // 저장
q // 나가기
참고 자료
- env_file vs enviroment
Docker 에 환경변수 관리하기
Docker container에서 환경변수를 활용하는 방법에 대해서 설명합니다. 현재 시점 기준으로 하여 docker documentation에 명시된 사항들을 대상으로 합니다. 다양한 방법을 소개하나, 각 인프라 환경에 맞
linkeverything.github.io
728x90
반응형