ð SpringBoot2ïŒJavaïŒã®åŠç¿çšãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã§ããSpringBootãåããŠåŠç¿ããŠã¿ããæ¹ãDockerãå©çšããJavaã®éçºç°å¢ãæ§ç¯ãããæ¹ãECãµã€ããåŠç¿ããŠã¿ããæ¹ã管çç»é¢ãäœæïŒãã«ããã°ã€ã³ïŒãäœæãããæ¹ãStripeãå©çšãã決ç®åŠçãäœæããŠã¿ããæ¹ããœãŒã·ã£ã«ãã°ã€ã³ãäœæããŠã¿ããæ¹ããªããžã§ã¯ãã¹ãã¬ãŒãžãžã®ç»åã¢ããããŒããäœæããŠã¿ããæ¹ãããã³ããšã³ããReactã§äœæããŠã¿ããæ¹ã«ãªã¹ã¹ã¡ã§ãã
MIT License
SpringBoot ïŒ React.js ã®åŠç¿çšãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã§ãã æ¬ãããžã§ã¯ãã¯ããã¡ãã§äœæãããlaravel-react-boilerplateããJavaã§ãªã¡ã€ã¯ãããã®ã«ãªããŸãã
graph LR
classDef default fill: #fff,stroke: #333,stroke-width: 1px;
style funcA fill: #fff,stroke: #333,stroke-width: 1px;
style funcB fill: #fff,stroke: #333,stroke-width: 1px;
style funcC fill: #fff,stroke: #333,stroke-width: 1px;
style funcD fill: #fff,stroke: #333,stroke-width: 1px;
style header fill: #fff,stroke: #333,stroke-width: 1px;
TOP-->ãã°ã€ã³--ID/ãã¹ã¯ãŒãèªèšŒ-->ãã€ã«ãŒã
TOP-->ãåãåããå
¥å
ãã°ã€ã³-->äŒå¡ä»®ç»é²
ãã°ã€ã³-->ãã¹ã¯ãŒããªã»ãã
subgraph funcA [åå賌å
¥]
ãã€ã«ãŒã-->åå賌å
¥å®äº
end
subgraph funcB [äŒå¡ç»é²]
äŒå¡ä»®ç»é²-->äŒå¡ä»®ç»é²å®äº--ã¡ãŒã«éä¿¡-->äŒå¡ç»é²å®äº
end
subgraph funcC [ãã¹ã¯ãŒããªã»ãã]
ãã¹ã¯ãŒããªã»ãã--ã¡ãŒã«éä¿¡-->ãã¹ã¯ãŒãå€æŽ
end
subgraph funcD [ãåãåãã]
ãåãåããå
¥å-->ãåãåããå®äº
end
subgraph header [ããã]
ãã€ã«ãŒã
ãåãåããå
¥å
ãã°ã¢ãŠã
end
â» ãã®ç°å¢ãå©çšããçºã«ã¯ãäºåã«dockerãdocker-composeãåäœããç¶æ ã§ããããšãåææ¡ä»¶ã§ãã (Windowsã®å Žåã¯ã以äžãåèã«ãWSLããšãDocker Desktop for WindowsããçšæããŠãã ãã)
åè https://docs.microsoft.com/ja-jp/windows/wsl/install
WSLã§Ubuntuãèµ·åãã
# ååèµ·åæã«ããŠãŒã¶åãšãã¹ã¯ãŒããèãããŸãã
# äœãå
¥åããã«EnterãæŒããšroot ãŠãŒã¶ãŒã§å©çšã§ããããã«ãªãã®ã§ãrootãŠãŒã¶ãŒãšããŠèšå®ããŸãã
# åãã«ã©ã€ãã©ãªãææ°åããŸãã
$ apt update
# æ¥æ¬èªã«å¯Ÿå¿ããŠãããŸãã
$ apt -y install language-pack-ja
$ update-locale LANG=ja_JP.UTF8
$ apt -y install manpages-ja manpages-ja-dev
https://docs.docker.com/docker-for-windows/install/
âã³ãã³ãããã³ããã§ããŒãžã§ã³ã衚瀺ãããã°OK
docker --version
åè https://qiita.com/endo_hizumi/items/0cc50bdfbd827579733e
ïŒïŒéç¥é åãããdockerã®ã¢ã€ã³ã³ãå³ã¯ãªãã¯ããŠãSettingãéžæ
ïŒïŒGeneralã®expose deamon on~~ã®ãã§ãã¯ãå
¥ããŸãã
ïŒïŒResourcesã®WSL INTEGRATION ããã"Ubuntu" ãã¹ã€ãããONã«ããŸãã
WSL åŽã®ã«ãŒãã Docker for Windows ã«åãããããã« WSL ã®ããŠã³ãèšå®ãè¡ããŸãã
$ vi /etc/wsl.conf
---
[automount]
root = /
options = "metadata"
---
以äžã®ããã« Cãã©ã€ãã®ãã¹ã"/mnt/c/"â"/c/" ã«å€æŽãããŠããã°æ£åžžã§ãã
$ cd /c/Users/USER/github
$ pwd
/c/Users/USER/github
# WSL äžã«DockerãšDocker Composeãã€ã³ã¹ããŒã«ããã
$ apt install docker
$ apt install docker-compose
ããã§WSLã§èµ·åããDockerã³ã³ããããã¹ããã·ã³åŽã§å©çšã§ããããã«ãªããŸãã
github ãããœãŒã¹ã³ãŒããããŠã³ããŒãããŸãã Windows ã®å Žåã¯WSLåŽã§ã¯ãªããå¿ ãWindowsåŽã®ãã£ã¬ã¯ããªã«é 眮ããŠãã ããã WSLåŽã§Springbootãèµ·åããå Žåã¯ãã¹ãåŽã®ãã©ãŠã¶ããã¢ã¯ã»ã¹ãåºæ¥ãªããªã£ãŠããŸããŸãã
# ãœãŒã¹ã³ãŒããé
眮ããããã£ã¬ã¯ããªã«ç§»åãã
cd /root/github
# GithubãããœãŒã¹ã³ãŒããããŠã³ããŒããã
git clone [email protected]:isystk/java-springboot-boilerplate.git
# MySQLã«æ¥ç¶ããçºã®ã³ãã³ããã€ã³ã¹ããŒã«ããŸãã(ããŒãžã§ã³ã¯äœã§ãOK)
# Windowsã®å Žå
$ apt install mysql-client
# Macã®å Žå
$ brew install mysql-client
# Windowsã®å Žå
$ curl -L git.io/nodebrew | perl - setup
# Macã®å Žå
$ brew install nodebrew
# nodebrew ãã·ã§ã«ã®ãã¹ã«è¿œå ãã
$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bashrc
# Node.js ãã€ã³ã¹ããŒã«
$ mkdir -p ~/.nodebrew/src
$ nodebrew ls-remote
$ nodebrew install v16.13.1
$ nodebrew use v16.13.1
$ npm install -g yarn
.
âââ docker
â âââ mysql (DBãµãŒããŒ)
â â âââ conf.d (mysqlã®èšå®ãã¡ã€ã«)
â â ââââ logs (mysqlã®ãã°)
â âââ nginx (WebãµãŒããŒ)
â â âââ conf.d (nginxã®èšå®ãã¡ã€ã«)
â â âââ logs (nginxã®ãã°)
â â âââ ssl (SSLèªå·±èšŒææž)
â âââ phpmyadmin (DB管çã³ã³ãœãŒã«)
â âââ s3 (Minio)
â âââ solr (æ€çŽ¢ãšã³ãžã³)
â â âââ data (solrã®ããŒã¿ãã¡ã€ã«)
â â âââ logs (solrã®ãã°)
â âââ docker-compose.yml
âââ batch (ããã)
â âââ src
â âââ main
â âââ java
â âââ resources
âââ business (å
±éããžãã¯)
â âââ src
â âââ main
â âââ java
â âââ resources
â âââ doma-gen (doma2ã®ãžã§ãã¬ãŒã¿)
â âââ sample.a5er (ERå³)
âââ htdocs
â âââ thumb (ã¢ããããŒãç»åã®äžæä¿å)
âââ web (Webå
±éããžãã¯)
â âââ src
â âââ main
â âââ java
â âââ resources
âââ web-admin (管çç»é¢)
â âââ src
â âââ main
â âââ java
â âââ resources
âââ web-front (ããã³ãç»é¢)
â âââ src
â â âââ main
â â âââ java
â â âââ resources
â âââ resources (ããã³ããšã³ãã¢ãžã¥ãŒã«)
â âââ node_modules
â âââ package.json
â âââ public
â âââ src
â â âââ @types
â â âââ __test__
â â âââ auth
â â âââ components
â â âââ constants
â â âââ index.tsx
â â âââ pages
â â âââ react-app-env.d.ts
â â âââ reportWebVitals.ts
â â âââ router.tsx
â â âââ services
â â âââ setupTests.ts
â â âââ static
â â âââ stores
â â âââ stories
â â âââ styles
â â âââ utilities
â âââ tsconfig.json
â âââ yarn.lock
âââ dc.sh (Dockeræäœçšã¹ã¯ãªãã)
âââ build.gradle (Gradleçšèšå®ãã¡ã€ã«)
以äžã®URLãããIntelliJ IDEA ãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ãè¡ããŸããç¡æã®Communityçã§åé¡ãããŸããã https://www.jetbrains.com/ja-jp/idea/download/
# ã³ãŒããã©ãŒããã¿ãŒãèšå®ãã
ãPreferences - Editor - Code Style - Javaãã«ãŠãSchemeã®ãšããã®èšå®ã¢ã€ã³ã³ããã"intellij-java-google-style.xml" ãã€ã³ããŒãããã
# Lombok pluginãã€ã³ã¹ããŒã«ãã(æ¢ã«ã€ã³ã¹ããŒã«ãããŠããå Žåã¯äžèŠã§ã)
ãPreferences - Plugins - Marketplaceãããã"Lombok"ãã€ã³ã¹ããŒã«åŸãInteliJãåèµ·åãã
# Annotation Processingãæå¹ã«ãã
ãPreferences - Build,Execution,Deployment - Compiler - Annotation Processorsãããã
âEnable annotation processingâ ãæå¹ã«ãã
# ãããã¯æã®ãããã¹ã¯ãããæå¹ã«ãã
ãPreferences - Advanced Settings - CompilerããããâAllow auto-make to start even if developed application is currently runningâ ãæå¹ã«ããã
åçš®ããŒã¢ã³ãèµ·åãã
# åæå
$ ./dc.sh init
# ãã¹ãŠã®Dockerã³ã³ãããèµ·åãã
$ ./dc.sh start
# ããŒã¿ããŒã¹ãç«ã¡äžãããŸã§å°ãåŸ
ã¡ãŸãã(ååã¯5åçšåºŠ)
# ããŒã¿ããŒã¹ãèµ·åããããMySQLã«ãã°ã€ã³ããŠã¿ã
$ ./dc.sh mysql login
Minio ã«S3ãã±ãããäœæãã
ç»åãã¡ã€ã«ãªã©ãä¿åããçºã®ãã±ããã ãaws.isystk.comã ãšããååã§äœæããŠã HTMLããåç §ã§ããããã« Publicã«ããŠãããŸãã
ããã¯ãšã³ãç°å¢ãæ§ç¯ãã
# Gradleã§å©çšã§ããã¿ã¹ã¯ã®äžèŠ§ã確èªããŸãã
$ ./gradlew tasks
# Flywayã§ããŒã¹ã©ã€ã³äœæãšãã€ã°ã¬ãŒããå®è¡ããŸãã
$ ./gradlew business::flywayMigrate
$ ./gradlew business::flywayInfo
# (æ¢åã®SQLãä¿®æ£ãããªã©ããŠæŽåæ§ãšã©ãŒã«ãªãå Žåã¯ä»¥äžãå®æœããŠãã ããã)
$ ./gradlew business::flywayRepair
# (ãã¹ãŠã®ãªããžã§ã¯ããåé€ããŠåæåãããå Žåã¯ä»¥äžãå®æœããŠãã ããã)
$ ./gradlew business::flywayClean
# ããããå®è¡ããŠååãã¹ã¿ããŒã¿ãç»é²ãã
# â» Windowsã®å Žåã¯WSLããã³ãã³ãå®è¡ã§ã¯ãªãInteliJåŽã®Gradleããèµ·åããªããšæ£åžžã«åäœããªãã®ã§æ³šæããŠãã ããã
$ ./gradlew batch::bootRun -Pargs=--job=importMstJob
# 管çç»é¢åŽã®ã¢ããªã±ãŒã·ã§ã³ãèµ·åããŸãã
# â» Windowsã®å Žåã¯WSLããã³ãã³ãå®è¡ã§ã¯ãªãInteliJåŽã®Gradleããèµ·åããªããšãã©ãŠã¶ããã¢ã¯ã»ã¹ã§ããªãã®ã§æ³šæããŠãã ããã
$ ./gradlew web-admin::bootRun
# ããããå®è¡ããŠSolrã«ååããŒã¿ãã€ã³ããã¯ã¹ãã
# â» Windowsã®å Žåã¯WSLããã³ãã³ãå®è¡ã§ã¯ãªãInteliJåŽã®Gradleããèµ·åããªããšæ£åžžã«åäœããªãã®ã§æ³šæããŠãã ããã
$ ./gradlew batch::bootRun -Pargs=--job=solrRegistJob
# ããã³ãåŽã®ã¢ããªã±ãŒã·ã§ã³ãèµ·åããŸãã
# â» Windowsã®å Žåã¯WSLããã³ãã³ãå®è¡ã§ã¯ãªãInteliJåŽã®Gradleããèµ·åããªããšãã©ãŠã¶ããã¢ã¯ã»ã¹ã§ããªãã®ã§æ³šæããŠãã ããã
$ ./gradlew web-front::bootRun
ããã³ããšã³ãç°å¢ãæ§ç¯ãã
# ããã³ããšã³ãããã«ãããã
$ cd web-front/resources
$ yarn
$ yarn build
Usage:
$(basename ${0}) [command] [<options>]
Options:
stats|st Dockerã³ã³ããã®ç¶æ
ã衚瀺ããŸãã
init Dockerã³ã³ããã»ã€ã¡ãŒãžã»çæãã¡ã€ã«ã®ç¶æ
ãåæåããŸãã
start ãã¹ãŠã®Daemonãèµ·åããŸãã
stop ãã¹ãŠã®Daemonãåæ¢ããŸãã
nginx restart NginXãåèµ·åããŸãã
mysql login MySQLããŒã¿ããŒã¹ã«ãã°ã€ã³ããŸãã
mysql export <PAHT> MySQLããŒã¿ããŒã¹ã®dumpãã¡ã€ã«ããšã¯ã¹ããŒãããŸãã
mysql import <PAHT> MySQLããŒã¿ããŒã¹ã«dumpãã¡ã€ã«ãã€ã³ããŒãããŸãã
mysql restart MySQLããŒã¿ããŒã¹ãåèµ·åããŸãã
--version, -v ããŒãžã§ã³ã衚瀺ããŸãã
--help, -h ãã«ãã衚瀺ããŸãã
MySQLããŒã¿ããŒã¹ã«æ¥ç¶ããŠããŒã¿ã®åç §ãç·šéãå¯èœã§ãã Dockerãèµ·ååŸã«ä»¥äžã®URLã«ã¢ã¯ã»ã¹ãããšå©çšå¯èœã§ãã
ãããŒã®ã¡ãŒã«ãµãŒããŒã§ããå®éã«ã¯ã¡ãŒã«ã¯éä¿¡ããããéä¿¡ãããã¡ãŒã«ã¯ãã©ãŠã¶ã§é²èŠ§ã§ããŸãã Dockerãèµ·ååŸã«ä»¥äžã®URLã«ã¢ã¯ã»ã¹ãããšå©çšå¯èœã§ãã
S3ã«æºæ ãããããŒã®ãªããžã§ã¯ãã¹ãã¬ãŒãžã§ãã Dockerãèµ·ååŸã«ä»¥äžã®URLã«ã¢ã¯ã»ã¹ãããšå©çšå¯èœã§ãã
Username | Password |
---|---|
access_key | secret_key |
Solrã®ç®¡çã³ã³ãœãŒã«ã§ããã€ã³ããã¯ã¹ãããããŒã¿ãæ€çŽ¢ãããåºæ¥ãŸãã Dockerãèµ·ååŸã«ä»¥äžã®URLã«ã¢ã¯ã»ã¹ãããšå©çšå¯èœã§ãã
äœæããAPIã®äžèŠ§ã確èªãããããŒã¿ãæ€çŽ¢ã§ããŸãã ããã³ããèµ·ååŸã«ä»¥äžã®URLã«ã¢ã¯ã»ã¹ãããšå©çšå¯èœã§ãã
http://localhost:8080/swagger-ui/
ãããžã§ã¯ã | æŠèŠ |
---|---|
Springframework | Spring Framework |
Spring Security | ã»ãã¥ãªãã£å¯ŸçãèªèšŒã»èªå¯ã®ãã¬ãŒã ã¯ãŒã¯ |
Doma2 | O/Rããã㌠|
spring-boot-doma2 | Doma2ãšSpring Bootãé£æºãã |
Flyway | DBãã€ã°ã¬ãŒã·ã§ã³ããŒã« |
Thymeleaf | ãã³ãã¬ãŒããšã³ãžã³ |
Thymeleaf Layout Dialect | ãã³ãã¬ãŒããã¬ã€ã¢ãŠãåãã |
WebJars | jQueryãªã©ã®ã¯ã©ã€ã¢ã³ãåŽã©ã€ãã©ãªãJARãšããŠçµã¿èŸŒã |
ModelMapper | Beanãããã³ã°ã©ã€ãã©ãª |
Ehcache | ãã£ãã·ã¥ã©ã€ãã©ãª |
Spock | ãã¹ããã¬ãŒã ã¯ãŒã¯ |
Mockito | ã¢ããã³ã°ãã¬ãŒã ã¯ãŒã¯ |
AdminLTE Docs | AdminLTE Docs |
Bootstrap4 æ¥æ¬èªãªãã¡ã¬ã³ã¹ | Bootstrap4 æ¥æ¬èªãªãã¡ã¬ã³ã¹ |