해결된 질문
작성
·
3K
2
안녕하세요 :)
강의를 통해 학습하고
실제 프로젝트를 도커 이미지로 만들고, 허브에 올린 뒤
ec2 서버에서 도커 이미지를 불러와서 컨테이너를 띄워보고..
그렇게 학습 하고 있습니다!
한가지 궁금한게 생겼는데요,
현재 개인적으로 진행하고 있는 스프링 프로젝트의 경우
application.properties에 db 정보를 입력받고 있습니다.
예를 들면 db -> my_db (마찬가지로 도커로 띄웠고, 이름을 my_db라고 했습니다)
spring.datasource.hikari.username=계정명
spring.datasource.hikari.password=비밀번호
이런식으로 이미 값을 주입한 뒤, docker build 로 이미지를 만들고,
ec2 서버에서 해당 이미지를 받아와서 docker run 할 때
저 username , password, db이름 같은 정보를 이미 만들어진 image 외부에서 변경할 수 있나요 ?
docker run 시 -e 를 통해서 application-prod.properties 이런식으로
환경 파일을 다른걸 적용하게끔은 할 수 있는데
해당 변수의 값들이 이미 정해진 상황에서
-e 옵션을 통해 값 변경도 가능한지 궁금합니다.
감사합니다 :)
답변 2
0
0
안녕하세요!
도커를 공부하고 실무에 적용할 때 생기는 중요한 이슈에 대해서 문의주셨네요.
도커 컨테이너를 실행할 때 변경할 수 있는 방법은 -e를 이용하여 환경변수를 지정하는 것입니다.
아마도.. 다음과 같은 방법을 사용할 수 있습니다.
1. 기존
서버 실행
2. 방법 1
환경변수를 읽어서 application.properties 에 해당 값을 수정한 다음 서버 실행
3. 방법 2
application-prod.properties 파일을 application.properties 파일로 변경한 다음 서버 실행
Dockerfile에서 CMD 항목에 서버를 바로 실행하지 말고 쉘 스크립트를 하나 만들어서 이런저런 작업을 하고 서버를 실행하면 됩니다.
이론적으로는 가능하고 실제로도 잘 동작하지만, 귀찮기 때문에 spring boot에서 자체적으로 더 편한 방법을 제공합니다.
1. spring boot 방식
환경변수중에 SPRING_PROFILES_ACTIVE=prod 를 지정하면 자동으로 application-prod.properties 파일을 바라봅니다.
개발할 땐 application.properties 설정을 바라보고 docker로 운영 서버에 배포할 땐 -e SPRING_PROFILES_ACTIVE=prod 만 추가하면 됩니다.
2. properties에 env 추가
spring.datasource.hikari.username=${DB_USER:devuser}
spring.datasource.hikari.password=${DB_PASS:devpass}
기존에 사용한 properties 내용을 다음과 같이 바꾸고 DB_USER, DB_PASS env를 사용할 수도 있습니다.
여러 방법중에 편한 방법을 시도해보시면 될 것 같습니다.
감사합니다!