명령어 | 용도 |
---|---|
FROM | 생성할 이미지의 베이스가 될 이미지 |
WORKDIR | 명령어를 실행할 작업 디렉터리를 설정한다. |
RUN | 이미지 빌드 시 내부적으로 실행할 커맨드 |
ENTRYPOINT | 이미지 실행 시 항상 실행되야 하는 커맨드 설정 |
CMD | 이미지가 실행될 때마다 실행할 명령어. Dockerfile 내에서 한 번만 사용할 수 있다. |
EXPOSE | 이미지에서 노출할 포트 및 프로토콜 설정 |
COPY /ADD | 이미지의 파일 시스템으로 파일 또는 디렉터리 복사 |
ENV | 환경 변수 설정 |
ARG | 빌드 시 넘어올 수 있는 인자 설정 |
현재 저희 프로젝트의 application.yml 구성은 다음과 같습니다.
jasypt:
encryptor:
bean: jasyptStringEncryptor
spring:
profiles:
active:
- local
group:
local:
- db-local
dev:
- db-dev
include:
- db
mail:
host: smtp.gmail.com
port: 587
username:
...
# Redis
data:
redis:
...
email.send: ENC(kGXTSlfxUWNbRoGuBwNRTJBETjMz04AChYMrwDeY3Cs=)
...
# 공통 설정
mybatis:
mapper-locations: classpath:/mappers/**.xml
config-location: classpath:/config/mybatis-config.xml
logging:
level:
'org.springframework.jdbc': debug
'org.springframework.security': debug
'org.store.clothstar': debug
jwt:
secret_key: ...
accessTokenValidTimeMillis: 1200000
refreshTokenValidTimeMillis: 12000000
spring:
jpa:
properties:
hibernate:
default_batch_fetch_size: 100
--- # local 설정
spring:
config:
activate:
on-profile: "db-local"
datasource:
url: jdbc:mysql://localhost:3306/clothstar82
username: ...
password: ...
p6spy:
enabled: true
appender: com.p6spy.engine.spy.appender.Slf4JLogger
logMessageFormat:
p6spy: "%(currentTime)|%(executionTime)|%(category)|%(sqlSingleLine)"
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
format_sql: true
--- # dev 설정
spring:
config:
activate:
on-profile: "db-dev"
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: ...
username: ...
password: ...
jpa:
hibernate:
ddl-auto: update
database-platform: org.hibernate.dialect.MySQLDialect
properties:
hibernate:
format_sql: true
show_sql: true
application-db.yml은
으로 나누어져 있으며, 공통은 기본적으로 설정되는 내용입니다.
공통 설정 이후 ---
을 통해 설정을 분리하고,spring:config:active:on-profile
을 통해 해당 설정의 이름을 지정합니다.
application.yml은 spring.profiles
의 내용과 같이 include: -db
를 통해 application-db.yml
의 내용을 포함하도록 되어 있습니다.
application.yml의 group
은 local, dev로 나눠져 있으며 각각의 group에 포함시킬 on-profile 이름을 포함하고 있습니다.
FROM openjdk:17-alpine
ARG JAR_FILE=/build/libs/clothstar-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Dspring.profiles.active=dev","-jar","/app.jar"]
FROM
: openjdk:17 베이스 이미지에서 레이어를 생성한다.
ARG
: 변수 선언
COPY
: 실행할 .jar 파일을 도커 컨테이너 내부에 app.jar
이라는 이름으로 복사
ENTRYPOINT
: 컨테이너가 실행될 때 java -Dspring.profiles.active=dev -jar /app.jar
명령을 실행한다.
-Dspring.profiles.active=dev
로 실행되면 local 대신 dev 프로파일이 활성화되고 group: dev
가 활성화되는 것이 됩니다.