[#13] feat: docker compose 활용한 애플리케이션 실행
- nginx, app, db 컨테이너 구성 - dockerize 활용한 컨테이너 실제 실행 순서 보장
This commit is contained in:
18
Dockerfile
18
Dockerfile
@@ -20,13 +20,23 @@ RUN ./gradlew bootjar
|
||||
|
||||
FROM openjdk:17-alpine
|
||||
|
||||
ENV DOCKERIZE_VERSION v0.6.1
|
||||
ENV WORK_DIR=/usr/app/
|
||||
|
||||
WORKDIR $WORK_DIR
|
||||
|
||||
COPY --from=BUILD_IMAGE $WORK_DIR/build/libs/*.jar dongne-api.jar
|
||||
|
||||
ENTRYPOINT ["java", \
|
||||
"-jar", \
|
||||
"-Dspring.profiles.active=${PROFILE_OPTION}", \
|
||||
"dongne-api.jar"]
|
||||
# run in order through dockerize utility (alpine version)
|
||||
# link - https://github.com/jwilder/dockerize
|
||||
RUN apk add --no-cache openssl bash
|
||||
|
||||
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
|
||||
|
||||
COPY ./script/docker-entrypoint.sh docker-entrypoint.sh
|
||||
|
||||
RUN chmod +x docker-entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["./docker-entrypoint.sh"]
|
||||
|
||||
15
README.md
15
README.md
@@ -7,3 +7,18 @@
|
||||
- kotlin 1.6.21
|
||||
- Spring Boot 2.7.0
|
||||
- MySQL
|
||||
|
||||
## local 환경
|
||||
|
||||
### 로컬 환경 내 로컬 DB 따로 구성
|
||||
- local에 DB(MySQL)용 docker container run
|
||||
- application은 IDE에서 실행 (default profile: `local`)
|
||||
```bash
|
||||
$ docker run --name beanie-test-db -e MYSQL_ROOT_PASSWORD=beaniejoy -d -p 3306:3306 mysql:5.7.34
|
||||
```
|
||||
|
||||
### docker compose 실행
|
||||
- docker compose를 이용한 nginx, DB(MySQL), application 한꺼번에 실행하는 경우
|
||||
```bash
|
||||
$ docker-compose up --build
|
||||
```
|
||||
|
||||
@@ -17,9 +17,11 @@ services:
|
||||
- "8080:8080"
|
||||
env_file:
|
||||
- env/app.env
|
||||
|
||||
# docker 환경에서 local db 활용하기 위한 설정
|
||||
networks:
|
||||
default:
|
||||
external:
|
||||
name: api-net
|
||||
depends_on:
|
||||
- db
|
||||
db:
|
||||
image: mysql:5.7.34
|
||||
ports:
|
||||
- "3306:3306"
|
||||
env_file:
|
||||
- env/db.env
|
||||
5
env/app.env
vendored
5
env/app.env
vendored
@@ -1 +1,4 @@
|
||||
PROFILE_OPTION=docker
|
||||
PROFILE_OPTION=docker
|
||||
SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/dongne?autoreconnect=true&characterEncoding=utf8&serverTimezone=Asia/Seoul
|
||||
SPRING_DATASOURCE_USERNAME=root
|
||||
SPRING_DATASOURCE_PASSWORD=beaniejoy
|
||||
2
env/db.env
vendored
Normal file
2
env/db.env
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
MYSQL_DATABASE=dongne
|
||||
MYSQL_ROOT_PASSWORD=beaniejoy
|
||||
6
script/docker-entrypoint.sh
Normal file
6
script/docker-entrypoint.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
echo "wait DB container up"
|
||||
dockerize -wait tcp://db:3306 -timeout 20s
|
||||
|
||||
echo "run dongne-api application"
|
||||
java -jar -Dspring.profiles.active=${PROFILE_OPTION} dongne-api.jar
|
||||
@@ -1,6 +0,0 @@
|
||||
# local docker 환경 내 local db 활용
|
||||
spring:
|
||||
datasource:
|
||||
url: jdbc:mysql://beanie-test-db:3306/dongne?autoreconnect=true&characterEncoding=utf8&serverTimezone=Asia/Seoul
|
||||
username: root
|
||||
password: beaniejoy # TODO 추후 보안에 대해 생각해보기
|
||||
Reference in New Issue
Block a user