From 300b8712da6cb9b528bffa2b1d52640c16fb0546 Mon Sep 17 00:00:00 2001 From: Torres Date: Mon, 24 Sep 2018 17:44:34 +0900 Subject: [PATCH 1/7] [docker] add docker-compose --- Makefile | 39 ++++++++++++++++++++++++++++++ docker-compose.application.yml | 25 +++++++++++++++++++ docker-compose.storage.yml | 15 ++++++++++++ docker/docker-mysql/my.cnf | 11 +++++++++ src/main/resources/application.yml | 20 +++++++-------- 5 files changed, 100 insertions(+), 10 deletions(-) create mode 100644 Makefile create mode 100644 docker-compose.application.yml create mode 100644 docker-compose.storage.yml create mode 100644 docker/docker-mysql/my.cnf diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d379012 --- /dev/null +++ b/Makefile @@ -0,0 +1,39 @@ +TAG = "Makefile" + +DOCKER = docker +MYSQLCLIENT = mycli +PIP = pip + +VCS = github.com +REPOSITORY = torreswoo/template-SpringBoot +MODULE_GATEWAY = service-gateway +MODULE_FRONTEND = service-front + +.PHONY: prepare +prepare: + @ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Installing prerequisites" + @ $(PIP) install -U mycli + +.PHONY: compose +compose: + @ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Running docker-compose" + @ docker stop $(docker ps -a -q) || true + @ docker rm -f $(docker ps -a -q) || true + @ docker volume rm $(docker volume ls -f dangling=true -q) || true + @ docker-compose -f docker-compose.storage.yml rm -fsv || true + @ docker-compose -f docker-compose.storage.yml up + +.PHONY: compose.all +compose.all: + @ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Running docker-compose & application" + @ docker stop $(docker ps -a -q) || true + @ docker rm -f $(docker ps -a -q) || true + @ docker volume rm $(docker volume ls -f dangling=true -q) || true + @ docker-compose -f docker-compose.storage.yml -f docker-compose.application.yml build + @ docker-compose -f docker-compose.storage.yml -f docker-compose.application.yml rm -fsv || true + @ docker-compose -f docker-compose.storage.yml -f docker-compose.application.yml up + +.PHONY: mycli +mycli: + @ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Connecting to mysql" + @ $(MYSQLCLIENT) -u root -h localhost application -p root \ No newline at end of file diff --git a/docker-compose.application.yml b/docker-compose.application.yml new file mode 100644 index 0000000..924d71e --- /dev/null +++ b/docker-compose.application.yml @@ -0,0 +1,25 @@ +version: '3.5' +services: + + service-template-spring-boot: + build: + context: . + dockerfile: Dockerfile # image: gcr.io/torrestemplate/template-springboot:1.0.0-SNAPSHOT + container_name: template-springboot + restart: always + ports: + - 8080:8080 + environment: + MYSQL_HOST: mysql + MYSQL_DATABASE: application + MYSQL_ROOT_USER: root + MYSQL_ROOT_PASSWORD: root + depends_on: + - mysql + - wait-dependencies + + wait-dependencies: + image: jwilder/dockerize + depends_on: + - mysql + command: dockerize -wait tcp://couchdb:5984 -wait tcp://mysql:3306 -timeout 5m diff --git a/docker-compose.storage.yml b/docker-compose.storage.yml new file mode 100644 index 0000000..f15dd41 --- /dev/null +++ b/docker-compose.storage.yml @@ -0,0 +1,15 @@ +version: '3.5' +services: + mysql: + image: mysql:5.7 + container_name: mysql + restart: always + ports: + - 3306:3306 + environment: + - MYSQL_DATABASE=application + - MYSQL_ROOT_USER=root + - MYSQL_ROOT_PASSWORD=root + - LANG=C.UTF-8 + volumes: + - ./docker/docker-mysql/:/etc/mysql/conf.d \ No newline at end of file diff --git a/docker/docker-mysql/my.cnf b/docker/docker-mysql/my.cnf new file mode 100644 index 0000000..d16bca4 --- /dev/null +++ b/docker/docker-mysql/my.cnf @@ -0,0 +1,11 @@ +[client] +default-character-set = utf8mb4 + +[mysql] +default-character-set = utf8mb4 + +[mysqld] +character-set-client-handshake = FALSE +character-set-server = utf8mb4 +collation-server = utf8mb4_unicode_ci +default-storage-engine=InnoDB \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2321bad..ce6e54b 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,16 +1,16 @@ spring.datasource: plarform: h2 - driverClassName: org.h2.Driver - url: jdbc:h2:mem:mydb;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL -# driverClassName: com.mysql.jdbc.Driver -# url: jdbc:mysql://localhost:3306/abt_rails - username: sa - password: + # driverClassName: org.h2.Driver + # url: jdbc:h2:mem:mydb;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL + driverClassName: com.mysql.jdbc.Driver + url: jdbc:mysql://localhost:3306/${MYSQL_DATABASE:application} + username: ${MYSQL_ROOT_USER:root} + password: ${MYSQL_ROOT_PASSWORD:root} initialize: true # classpath:/schema.sql, import.sql, data.sql -# validationQuery: SELECT 1 -# maxActive: 10 -# testOnBorrow: true -# testOnReturn: false + # validationQuery: SELECT 1 + # maxActive: 10 + # testOnBorrow: true + # testOnReturn: false ## Pool Info ## maxActive: 100 From a1d59bbb3557396a5cd3d96e731c505303d6b6de Mon Sep 17 00:00:00 2001 From: Torres Date: Thu, 15 Nov 2018 02:17:57 +0900 Subject: [PATCH 2/7] bugfix --- Dockerfile | 6 ++-- Makefile | 5 +++- README.md | 10 +++++++ build.gradle | 2 ++ build_docker_image.sh | 5 ---- docker-compose.application.yml | 2 +- src/main/resources/application.yml | 24 ++++++++-------- src/main/resources/data.sql | 22 +++++++-------- .../com/torres/AppSpringBootMainTest.java | 28 ------------------- template-SpringBoot.iml | 13 +++++++++ 10 files changed, 56 insertions(+), 61 deletions(-) delete mode 100644 src/test/java/com/torres/AppSpringBootMainTest.java create mode 100644 template-SpringBoot.iml diff --git a/Dockerfile b/Dockerfile index 2baff26..5a99a3a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,9 +7,11 @@ RUN echo "$LOG_TAG Prepare the application" \ mkdir /usr/local/app COPY ./build/libs/template-SpringBoot-*.jar /usr/local/app/template-SpringBoot.jar - +COPY ./public.tar.gz /usr/local/app/ WORKDIR /usr/local/app RUN ls -al -EXPOSE 8080 +RUN tar -xvzf ./public.tar.gz +EXPOSE 8080 +ENV CLASSPATH .; CMD ["java","-jar","/usr/local/app/template-SpringBoot.jar"] diff --git a/Makefile b/Makefile index d379012..1a4c75e 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,9 @@ compose: .PHONY: compose.all compose.all: @ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Running docker-compose & application" + @ ./gradlew clean build + @ rm -rf public.tar.gz + @ tar -cvzf public.tar.gz ./public @ docker stop $(docker ps -a -q) || true @ docker rm -f $(docker ps -a -q) || true @ docker volume rm $(docker volume ls -f dangling=true -q) || true @@ -36,4 +39,4 @@ compose.all: .PHONY: mycli mycli: @ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Connecting to mysql" - @ $(MYSQLCLIENT) -u root -h localhost application -p root \ No newline at end of file + @ $(MYSQLCLIENT) -u root -h localhost application -p root diff --git a/README.md b/README.md index 641971e..87269e1 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,19 @@ # Torres SpringBoot Project templates - https://torreswoo.github.io/posts/springboot-jolokia/ +- check `http://localhost:8080/dashboard` +```bash +$ make compose.all # start all +or +$ docker run -it -p 8080:8080 gcr.io/torrestemplate/template-springboot:1.0.0-SNAPSHOT +``` ## Start project - build, run ``` +$ make compose.all # start all + +$ make mycli +$ make compose $ ./gradlew build $ ./gradlew bootrun ``` diff --git a/build.gradle b/build.gradle index eb56527..2e7d2d3 100644 --- a/build.gradle +++ b/build.gradle @@ -67,6 +67,8 @@ dependencies { compile "com.h2database:h2:$versions.h2" // datasource - JDBC compile "org.springframework.boot:spring-boot-starter-jdbc:${springBootVersion}" + compile "mysql:mysql-connector-java:5.1.38" + // datasource - JPA compile "org.springframework.boot:spring-boot-starter-data-jpa:${springBootVersion}" } diff --git a/build_docker_image.sh b/build_docker_image.sh index 64bd74d..513ff76 100755 --- a/build_docker_image.sh +++ b/build_docker_image.sh @@ -3,11 +3,6 @@ TAG="[build_docker_image.sh]" usage="Usage: PUSH=[false|true] ENV=[PROD|DEV] $0" -if [ "$ENV" != "PROD" ] && [ "$ENV" != "DEV" ] ; then - echo ${usage} - exit 1 -fi - if [ "$PUSH" == "" ]; then PUSH="false" fi diff --git a/docker-compose.application.yml b/docker-compose.application.yml index 924d71e..276fe60 100644 --- a/docker-compose.application.yml +++ b/docker-compose.application.yml @@ -22,4 +22,4 @@ services: image: jwilder/dockerize depends_on: - mysql - command: dockerize -wait tcp://couchdb:5984 -wait tcp://mysql:3306 -timeout 5m + command: dockerize -wait tcp://mysql:3306 -timeout 5m diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ce6e54b..0153ea7 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,23 +1,21 @@ spring.datasource: plarform: h2 - # driverClassName: org.h2.Driver - # url: jdbc:h2:mem:mydb;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL + # driverClassName: org.h2.Driver + # url: jdbc:h2:mem:mydb;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL driverClassName: com.mysql.jdbc.Driver - url: jdbc:mysql://localhost:3306/${MYSQL_DATABASE:application} + url: jdbc:mysql://mysql:3306/${MYSQL_DATABASE:application} username: ${MYSQL_ROOT_USER:root} password: ${MYSQL_ROOT_PASSWORD:root} initialize: true # classpath:/schema.sql, import.sql, data.sql - # validationQuery: SELECT 1 - # maxActive: 10 - # testOnBorrow: true - # testOnReturn: false ## Pool Info ## - maxActive: 100 + validationQuery: SELECT 1 + testOnBorrow: true + testOnReturn: false + maxActive: 10 + maxIdle: 10 + minIdle: 10 initialSize: 20 - minIdle: 20 - validationQuery: select 1 - testWhileIdle: true timeBetweenEvictionRunsMillis: 5000 #5 second minEvictableIdleTimeMillis: 10000 #10 second validationQueryTimeout: 5 @@ -26,6 +24,6 @@ spring.datasource: spring.jpa: database: MYSQL show-sql: true - properties.hibernate.hbm2ddl.auto: create # create, update, none, validate + properties.hibernate.hbm2ddl.auto: update # create, update, none, validate properties.hibernate.format_sql: true - properties.hibernate.use_sql_comments: true \ No newline at end of file + properties.hibernate.use_sql_comments: true diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index 973ad59..f6f50ce 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -1,15 +1,15 @@ -INSERT INTO USER_ACTION_LOG(id, action_time, user_id) VALUES(1, '2018-01-03 10:11:37', 10021); -- 10021이 계좌개셜 -INSERT INTO USER_ACTION_LOG(id, action_time, user_id) VALUES(2, '2018-01-04 10:11:37', 10022); -- 10022이 계좌개셜 -INSERT INTO USER_ACTION_LOG(id, action_time, user_id) VALUES(3, '2018-01-04 11:12:50', 10023); -- 10023이 계좌개셜 -INSERT INTO USER_ACTION_LOG(id, action_time, user_id) VALUES(4, '2018-01-06 10:11:37', 10024); -- 10024이 계좌개셜 -INSERT INTO USER_ACTION_LOG(id, action_time, user_id) VALUES(5, '2018-01-06 18:12:50', 10023); -- 10023이 100,000원을 카카오계좌로 충전 -INSERT INTO USER_ACTION_LOG(id, action_time, user_id) VALUES(6, '2018-01-07 11:12:50', 10023); -- 10023가 -> 10021에게 20,000원을 송금 / 받기 -INSERT INTO USER_ACTION_LOG(id, action_time, user_id) VALUES(7, '2018-01-07 12:12:50', 10024); -- 10024가 200,000원을 카카오계좌로 충전 +INSERT INTO user_action_log(id, action_time, user_id) VALUES(1, '2018-01-03 10:11:37', 10021); -- 10021이 계좌개셜 +INSERT INTO user_action_log(id, action_time, user_id) VALUES(2, '2018-01-04 10:11:37', 10022); -- 10022이 계좌개셜 +INSERT INTO user_action_log(id, action_time, user_id) VALUES(3, '2018-01-04 11:12:50', 10023); -- 10023이 계좌개셜 +INSERT INTO user_action_log(id, action_time, user_id) VALUES(4, '2018-01-06 10:11:37', 10024); -- 10024이 계좌개셜 +INSERT INTO user_action_log(id, action_time, user_id) VALUES(5, '2018-01-06 18:12:50', 10023); -- 10023이 100,000원을 카카오계좌로 충전 +INSERT INTO user_action_log(id, action_time, user_id) VALUES(6, '2018-01-07 11:12:50', 10023); -- 10023가 -> 10021에게 20,000원을 송금 / 받기 +INSERT INTO user_action_log(id, action_time, user_id) VALUES(7, '2018-01-07 12:12:50', 10024); -- 10024가 200,000원을 카카오계좌로 충전 -- 계좌계설 -------------------------------------------------------------------- -INSERT INTO SERVICE_ACCOUNT_LOG(user_action_log_id, account_number) VALUES (1, '100-111-000'); -INSERT INTO SERVICE_ACCOUNT_LOG(user_action_log_id, account_number) VALUES (2, '200-111-000'); -INSERT INTO SERVICE_ACCOUNT_LOG(user_action_log_id, account_number) VALUES (3, '300-111-000'); -INSERT INTO SERVICE_ACCOUNT_LOG(user_action_log_id, account_number) VALUES (4, '400-111-000'); +INSERT INTO service_account_log(user_action_log_id, account_number) VALUES (1, '100-111-000'); +INSERT INTO service_account_log(user_action_log_id, account_number) VALUES (2, '200-111-000'); +INSERT INTO service_account_log(user_action_log_id, account_number) VALUES (3, '300-111-000'); +INSERT INTO service_account_log(user_action_log_id, account_number) VALUES (4, '400-111-000'); diff --git a/src/test/java/com/torres/AppSpringBootMainTest.java b/src/test/java/com/torres/AppSpringBootMainTest.java deleted file mode 100644 index 034b798..0000000 --- a/src/test/java/com/torres/AppSpringBootMainTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.torres; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT) -@ActiveProfiles("test") -public class AppSpringBootMainTest { - - @Autowired - private AppSpringBootInterface appMain; - - @Before - public void setup() throws Exception { - appMain.start(); - } - - @Test - public void contextLoads() { - } - -} \ No newline at end of file diff --git a/template-SpringBoot.iml b/template-SpringBoot.iml new file mode 100644 index 0000000..a612804 --- /dev/null +++ b/template-SpringBoot.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file From 31c915d8cac98d621dd6255eee90885f99110806 Mon Sep 17 00:00:00 2001 From: Torres Date: Wed, 6 Nov 2019 01:14:05 +0900 Subject: [PATCH 3/7] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 87269e1..227ec4b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Torres SpringBoot Project templates +# Torres SpringBoot Project templates. - https://torreswoo.github.io/posts/springboot-jolokia/ - check `http://localhost:8080/dashboard` ```bash From e2f4bf06414211a11b41c5cfa7c2b6b3a725ecf9 Mon Sep 17 00:00:00 2001 From: Torres Date: Wed, 6 Nov 2019 01:18:25 +0900 Subject: [PATCH 4/7] Update Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1a4c75e..281dc7f 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ compose: compose.all: @ echo "[$(TAG)] ($(shell TZ=UTC date -u '+%H:%M:%S')) - Running docker-compose & application" @ ./gradlew clean build - @ rm -rf public.tar.gz + @ rm -rf public.tar.gz @ tar -cvzf public.tar.gz ./public @ docker stop $(docker ps -a -q) || true @ docker rm -f $(docker ps -a -q) || true From 209f3a4f4455438be195c2514b9f3168c3e883e5 Mon Sep 17 00:00:00 2001 From: Torres Date: Wed, 6 Nov 2019 01:26:58 +0900 Subject: [PATCH 5/7] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 227ec4b..87269e1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Torres SpringBoot Project templates. +# Torres SpringBoot Project templates - https://torreswoo.github.io/posts/springboot-jolokia/ - check `http://localhost:8080/dashboard` ```bash From 06539d509038fda60e9ba7d97ff61dacc3f8cca8 Mon Sep 17 00:00:00 2001 From: Torres Date: Wed, 6 Nov 2019 10:20:10 +0900 Subject: [PATCH 6/7] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 87269e1..227ec4b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Torres SpringBoot Project templates +# Torres SpringBoot Project templates. - https://torreswoo.github.io/posts/springboot-jolokia/ - check `http://localhost:8080/dashboard` ```bash From a507c22dbf06de86bfb44dca6b7399bd2529294a Mon Sep 17 00:00:00 2001 From: Torres Date: Wed, 6 Nov 2019 10:52:06 +0900 Subject: [PATCH 7/7] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 227ec4b..f691187 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Torres SpringBoot Project templates. +# Torres SpringBoot Project template - https://torreswoo.github.io/posts/springboot-jolokia/ - check `http://localhost:8080/dashboard` ```bash