인프런 커뮤니티 질문&답변

춘몽님의 프로필 이미지

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

08-06 Docker 패키징

Docker-compose.yaml 에 적힌 password는 따로 처리 안해줘도 되나요??

해결된 질문

작성

·

444

0

안녕하세요.

 

강의에서 .env.docker 에 적는 값들은 DB에 접속하기 위해서 적는거고, Docker-compose.yaml은 DB를 생성하기 위해 적는걸로 이해하고 있습니다.

 

DB에 접속하기 위한 내용들은 Github에 올라가지 않도록 하기 위해서 환경변수로 처리를 한 반면에,

DB를 생성하기 위한 Docker-compose.yaml은 따로 처리를 안해서 MYSQL_ROOT_PASSWD 가 그대로 노출되는데 이건 따로 처리를 안해줘도 되나요?
처리를 해줘야한다면 어떤식으로 해주나요??

 

그리고 강의에서는 언급을 안하셨지만, .env.docker 도 .gitignore 에 추가해주는게 맞겠죠??

답변 2

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! 춘몽님!

 

춘몽님의 질문은 다음과 같아요!

강의에서 .env.docker 에 적는 값들은 DB에 접속하기 위해서 적는거고, Docker-compose.yaml은 DB를 생성하기 위해 적는걸로 이해하고 있습니다.

=> 정확히 이해하셨습니다!^^

여기서 docker-compose.yaml 에 들어가는 DB를 생성하기 위한 'root'라는 password를 어떻게 감출 것이냐가 문제인데요!


사실, 운영 DB는 안정성 등을 위해 도커로 만들지 않고, 분리하는 것이 일반적이에요!
(물론, 기업마다 달라요! DevOps 팀이 강하게 꾸려진 경우는 도커와 같은 컨테이너 형식을 취하는 경우도 있답니다!)

 

따라서, 현재 도커로 DB를 만드는 것은 개발용 DB로만 사용되기 때문에 password 노출에 걱정하지 않으셔도 됩니다!

 

하지만, 감추는 방법도 알고 계시면 좋겠죠?!^^
아래는 감추는 방법이에요!

# .env 파일
MYSQL_ROOT_PASSWORD=root
# docker-compose.yaml 파일
  my-database:
    # platform: linux/86_64
    image: mysql:latest
    environment:
      MYSQL_DATABASE: 'mydocker'
      MYSQL_ROOT_PASSWORD: '${MYSQL_ROOT_PASSWORD}' # root
    ports:
      - 3306:3306

 

실행 시점에 .env 파일을 추가하여 docker-compose를 함께 실행하셔야 합니다!
아래의 명령어를 사용해 보세요!

# 기본 실행 명령
docker-compose up

# 환경변수 함께 실행 명령
docker-compose --env-file ./.env up

0

안녕하세요, 인프런 AI 인턴입니다.

춘몽님께서 질문하신 docker-compose.yaml 내의 MYSQL_ROOT_PASSWORD와 같은 중요한 환경변수를 어떻게 관리해야 하는지에 대한 의문에 대한 정보를 찾아드릴 수 있을 것 같습니다.

docker-compose.yaml 파일에 포함된 비밀번호 보호하기라는 제목의 공유된 질문에서는 비슷한 맥락으로 환경변수와 관련하여 어떻게 처리해야 하는지에 대한 답변이 있었습니다. 다만, 이 경우에는 docker-compose.yaml 파일 자체에 대한 내용은 아니었습니다. 질문을 보시려면, 여기를 클릭해주세요.

이와 관련하여, 환경변수로선언한 값들을 다룰 때 docker-compose.yaml 파일에 그대로 노출시키는 것은 보안 상 좋지 않습니다. .env 파일을 사용하여 민감한 정보를 관리하고, 이 .env 파일은 .gitignore에 추가하여 깃허브와 같은 공개된 위치에 업로드되지 않도록 해야 합니다.

춘몽님의 경우, docker-compose.yaml에서 MYSQL_ROOT_PASSWORD 값을 환경변수 파일로부터 읽어오도록 설정할 수 있습니다. 예를 들어, 다음과 같은 방식으로 구성할 수 있습니다:

services:
  my-database:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

그리고 환경변수 MYSQL_ROOT_PASSWORD의 값을 .env 파일에 포함시켜 관리하며, 이 .env 파일은 버전 관리에서 제외되어야 합니다. 따라서 .gitignore 파일에 .env 파일을 추가하는 것이 올바른 방법입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

춘몽님의 프로필 이미지

작성한 질문수

질문하기