diff --git a/Dockerfile b/Dockerfile index 6697449..53984b3 100644 --- a/Dockerfile +++ b/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"] \ No newline at end of file +# 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"] diff --git a/README.md b/README.md index 393765b..d1e30ac 100644 --- a/README.md +++ b/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 +``` diff --git a/docker-compose.yml b/docker-compose.yaml similarity index 74% rename from docker-compose.yml rename to docker-compose.yaml index dd99441..0d99e36 100644 --- a/docker-compose.yml +++ b/docker-compose.yaml @@ -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 diff --git a/env/app.env b/env/app.env index e398751..fd92961 100644 --- a/env/app.env +++ b/env/app.env @@ -1 +1,4 @@ -PROFILE_OPTION=docker \ No newline at end of file +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 \ No newline at end of file diff --git a/env/db.env b/env/db.env new file mode 100644 index 0000000..5b48f94 --- /dev/null +++ b/env/db.env @@ -0,0 +1,2 @@ +MYSQL_DATABASE=dongne +MYSQL_ROOT_PASSWORD=beaniejoy \ No newline at end of file diff --git a/script/docker-entrypoint.sh b/script/docker-entrypoint.sh new file mode 100644 index 0000000..07861dd --- /dev/null +++ b/script/docker-entrypoint.sh @@ -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 \ No newline at end of file diff --git a/src/main/resources/application-docker.yml b/src/main/resources/application-docker.yml deleted file mode 100644 index b3402cd..0000000 --- a/src/main/resources/application-docker.yml +++ /dev/null @@ -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 추후 보안에 대해 생각해보기 \ No newline at end of file