현제의 현재이야기
[DevOps] Docker compose 환경변수 본문
- docker compose.yml에 키 값을 추가할 때마다 하드코딩을 하면 번거롭기 때문에 .env 파일을 두어서 관리하고자 한다.
version: '3'
services:
green:
container_name: green
image: hjdeploy/test
ports:
- "8080:8080" # green은 8080 포트를 열어줍니다.
env_file:
- .env
command: ["--spring.profiles.active=prod"]
blue:
container_name: blue
image: hjdeploy/test
ports:
- "8081:8080" #blue는 8081 포트를 열어줍니다.
env_file:
- .env
command: ["--spring.profiles.active=prod"]
- env_file: -.env 추가하고, 같은 디렉토리에 .env 작성
DATASOURCE_URL=
DATASOURCE_USERNAME=
DATASOURCE_PASSWORD=
- 이렇게 키, 값 쌍으로 저장해둔다.
- .env 를 여러가지 두고 관리하면 될 것 같은데 이것도 보안 문제와(ec2 서버에 그대로 노출) 키 값이 바뀔 때마다 ssh 접속해서 수동으로 고쳐주어야 한다는 단점이 있음. 깃헙 secrets를 사용하는 방안을 생각해보아야겠다.
- command로 스프링의 profile을 prod로 실행하게 두었다. 그리고나서 스프링 서브모듈로 연결한 application.yml은 dev 프로파일로 설정하여서 도커 이미지 빌드시 테스트를 통과하게 하였다.
applicatioin.yml
spring:
profiles:
active: dev
jpa:
open-in-view: false
hibernate:
ddl-auto: create
---
spring:
config:
activate:
on-profile: local
import: application-local.yml
---
spring:
config:
activate:
on-profile: dev
import:
- classpath:sub-config/application-dev.yml
---
spring:
config:
activate:
on-profile: prod
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: ${DATASOURCE_URL}
username: ${DATASOURCE_USERNAME}
password: ${DATASOURCE_PASSWORD}
- 그리고 docker-compose pull시, command로 prod 프로파일로 실행하여서 datasource를 불러온다. 저기서 ${}는 깃 시크릿에서 받아온다.
- 이렇게 한 이유는 docker compose에서는 서브모듈이 잘 안 불러와지는 것 같아서 이렇세 env_file로 변수들을 docker-compose.yml에 설정해야된다고 하더라.
재밌다~
'Infra' 카테고리의 다른 글
[Devops] docker compose의 volumes (0) | 2023.07.20 |
---|---|
[Devops] [Error]docker-compose : Unsupported config option for services service: 'platform' 해결 (0) | 2023.07.19 |
[DevOps] nginx를 이용한 무중단 배포 (1) | 2023.05.19 |
[docker] GitHub submodule (0) | 2023.05.16 |
[docker] GitHub actions CI CD (1) | 2023.05.13 |
Comments