컴공생의 발자취

AWS EC2에 .env 파일로 Docker 환경변수 관리하기 (feat. docker-compose) 본문

🐳 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
반응형