Skip to content

Instantly share code, notes, and snippets.

@taljacob2
Last active September 27, 2022 20:53
Show Gist options
  • Save taljacob2/02ee5a866ad0a0ed50126c30780bea58 to your computer and use it in GitHub Desktop.
Save taljacob2/02ee5a866ad0a0ed50126c30780bea58 to your computer and use it in GitHub Desktop.
Docker Springboot + SQL
# DB (mysql)
MYSQLDB_USER=root
MYSQLDB_ROOT_PASSWORD=123456 # For some reason cannot be set to: "mysql"
MYSQLDB_DATABASE=app_db
MYSQLDB_LOCAL_PORT=3307
MYSQLDB_DOCKER_PORT=3306
# DB UI (adminer)
ADMINER_DOCKER_PORT=8080
ADMINER_LOCAL_PORT=8061
# Spring (app)
SPRING_DOCKER_PORT=8070 # Must be the same as `SPRING_DOCKER_PORT` in `Dockerfile` file
SPRING_LOCAL_PORT=6868
#----------------------------------------
# Main configurations:
#--------------------
# DB Settings
spring.datasource.url=jdbc:mysql://localhost:3307/app_db?createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=123456
#------------
# Hibernate Dialect:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
#------------
# DDL:
spring.jpa.hibernate.ddl-auto=update
#------------
# Show sql statement
logging.level.org.hibernate.SQL=debug
# Show sql values
logging.level.org.hibernate.type.descriptor.sql=trace
#------------
# Server port:
server.port=8070
#--------------------------------------------
#------------
#------------
# OR
#------------
#------------
##--------------------------------------------
## Heroku configurations:
##-----------------------
## DB Settings
#spring.datasource.driverClassName=org.postgresql.Driver
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL95Dialect
#spring.jpa.properties.hibernate.globally_quoted_identifiers=true
#spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
#
## Logging (THIS IS OPTIONAL)
#logging.level.org.hibernate.SQL=debug
#logging.level.org.hibernate.type.descriptor.sql=trace
#
## DDL
#spring.jpa.hibernate.ddl-auto=update
#spring.jpa.generate-ddl=true
#
## Port
#server.port=${PORT}
#
##-----------------------
## NOTES:
##
## Heroku automatically *creates and injects* the env-variables:
## `SPRING_DATASOURCE_URL`
## `SPRING_DATASOURCE_USERNAME`
## `SPRING_DATASOURCE_PASSWORD`
##
## Heroku automatically *creates* the env-variable:
## `${PORT}`
##--------------------------------------------
version: "3.8"
services:
db: # This is the DEFAULT `Server` name in `adminer`. DO NOT CHANGE THIS NAME.
image: mysql
restart: always
env_file: ./.env
environment:
- MYSQL_ROOT_PASSWORD=$MYSQLDB_ROOT_PASSWORD
- MYSQL_DATABASE=$MYSQLDB_DATABASE
ports:
- $MYSQLDB_LOCAL_PORT:$MYSQLDB_DOCKER_PORT
volumes:
- db_data:/var/lib/mysql # CONST Directory names for InnoDB. DO NOT CHANGE THIS NAME.
adminer:
image: adminer
depends_on:
- db # Must -> Same as the `db` service name, as declared above.
restart: always
env_file: ./.env
ports:
- $ADMINER_LOCAL_PORT:$ADMINER_DOCKER_PORT
# app:
# depends_on:
# - db # Must -> Same as the `db` service name, as declared above.
# build: .
# restart: always
# env_file: ./.env
# ports:
# - $SPRING_LOCAL_PORT:$SPRING_DOCKER_PORT
# environment: # Note: "jdbc:mysql://`db`... <- is the `Server` name in `adminer`. Same as the `db` service name, as declared above.
# SPRING_APPLICATION_JSON: '{
# "spring.datasource.url" : "jdbc:mysql://db:$MYSQLDB_DOCKER_PORT/$MYSQLDB_DATABASE?useSSL=false&createDatabaseIfNotExist=true&serverTimezone=UTC&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true",
# "spring.datasource.username" : "$MYSQLDB_USER",
# "spring.datasource.password" : "$MYSQLDB_ROOT_PASSWORD",
# "spring.jpa.properties.hibernate.dialect" : "org.hibernate.dialect.MySQL8Dialect",
# "spring.jpa.hibernate.ddl-auto" : "update",
# "server.port" : "$SPRING_DOCKER_PORT",
# "spring.datasource.driver-class-name" : "com.mysql.cj.jdbc.Driver"
# }'
# stdin_open: true
# tty: true
volumes:
db_data: {}
#------------------------------------
# If you want to rename this network:
#networks:
# default:
# name: YOUR-NETWORK-NAME
# ----- `FROM` (this section MUST be first) -----
FROM openjdk:8-jre-alpine
# ----- `FROM` (this section MUST be first) -----
# ----- Variables -----
# Port (MUST be the same as `SPRING_DOCKER_PORT` in `.env` file)
ENV SPRING_DOCKER_PORT=8070
# Name
ARG APP_NAME=web.jar
ENV APP_PATH=app-dir/$APP_NAME
# ----- Variables -----
# ----- Build -----
EXPOSE $SPRING_DOCKER_PORT
ADD build/libs/$APP_NAME $APP_PATH
ENTRYPOINT java -jar $APP_PATH
# ----- Build -----
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment