[docker compose env] 도커 컨테이너 내에 환경변수를 전달하는 방법

EC2에서 Docker Compose를 사용해서 스프링 내에 웹 애플리케이션에 사용할 환경변수를 설정한다, docker compose env
dustjq1005 2025년 02월 15일 2025년 09월 08일 수정됨

Spring Web Application이 컨테이너 내부에 존재하기 때문에 EC2 환경변수를 바로 가져다 쓸 수 없습니다. 환경 변수를 Docker로 전달해줘야 사용할 수 있는데요. Docker-compose를 이용해서 환경변수를 설정하는 방법을 알아보겠습니다. 우선, EC2 서버에 접속을 해줍니다.

1. Docker-compose 설치

1) Docker Compose 설치 확인

먼저, Docker Compose가 이미 설치되어 있는지 확인해봅니다.

docker-compose --version
or
docker compose version

설치되어 있다면 버전 정보가 출력되고, 아니라면 command not found❌ 그런데 뭐 없으니 당연히 not found가 뜨겠죠.

2) Docker Compose 설치

yum 업데이트

sudo yum update -y
sudo yum install docker -y

Docker Compose 설치

sudo yum install docker-compose-plugin -y

3) 설치 확인

docker compose version

2. .env, docker-compose.yml 파일 작성

1) 파일 위치 정하기

.env, docker-compose.yml 파일들은 프로젝트 내부 또는 외부 경로에 둘 수 있습니다.. 그러나 보통 개인 키 같은 중요한 정보들이 담긴 파일은 Git 같은 저장소에 올라가면 노출 위험이 있기 때문에 프로젝트 내부에는 두지 않고 따로 관리합니다.

환경변수에 있는 값들은 외부로 노출되면 보안 위험성이 있기 때문이죠.

경로

저는 아래와 같은 경로로 설정했습니다.

/home/docker/private/

env 파일은 docker-compose.yml과 같은 디렉토리안에 있습니다.

2) .env, docker-compose.yml 작성

docker-composedocker-compse.yml을 토대로 동작합니다. docker-compose의 용도는 여러 컨테이너를 가지는 애플리케이션을 통합적으로 만들고, 각각의 컨테이너를 시작 및 중지하는 작업을 더 쉽게 수행할 수 있도록 해준다고 합니다. 컨테이너 관리 툴이라고 볼 수 있을 것 같은데, 환경변수를 셋팅하거나 환경변수가 작성되어있는 .env 파일을 불러서 쓸 수 있는 기능도 제공합니다.

docker-compose.yml 파일 내용 작성

vi 편집기로 docker-compose.yml 파일 생성

version: '3.8'
services:
  app:
    image: my-private-image
    env_file:
      - .env
    ports:
      - "8080:8080"
  • env_file: {.env 파일 경로}

.env 파일 생성 vi 편집기로 .env파일 생성

sudo vi .env

.env 파일 내용

SPRING_PROFILES_ACTIVE=dev

spring에 사용할 환경변수를 설정하고 편집 내용을 저장합니다.

3) docker-compose 실행

docker-compose up -d

이제 docker-compose.yml 파일이 있는 디렉터리로 이동하고, 위에 명령어를 실행시킵니다. 위에 명령어는 Docker Compose를 사용하여 컨테이너를 백그라운드에서 실행하는 역할을 합니다.

  • docker-compose : Docker Compose CLI(Command Line Interface) 를 실행하는 명령어.
  • up : docker-compose.yml 파일에 정의된 모든 서비스(컨테이너)를 실행.
    • 컨테이너가 없으면 새로 생성.
    • 컨테이너가 이미 실행 중이면 변경 사항이 있는 경우 업데이트.
    • docker-compose.yml에서 정의한 네트워크와 볼륨도 함께 설정됨.
  • -d: 백드라운드 실행

Comments