Skip to content

Commit 88464c0

Browse files
committed
refactor: improve docker compose files
1 parent 47fdcbb commit 88464c0

File tree

13 files changed

+149
-123
lines changed

13 files changed

+149
-123
lines changed

.docker/.env.example

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# docker
2-
COMPOSE_PROJECT_NAME=spring-boot-example-containers
2+
COMPOSE_PROJECT_NAME=spring-boot-example
33
TIMEZONE=America/Sao_Paulo
44
API_PORT=8080
55
API_DEBUG_PORT=8000

.docker/docker-compose.dev.yml

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ services:
44
database:
55
image: postgres:13
66
restart: unless-stopped
7-
container_name: crud-database
7+
container_name: ${COMPOSE_PROJECT_NAME}-database
88
command:
99
[
1010
"postgres",
@@ -22,15 +22,19 @@ services:
2222
TZ: ${TIMEZONE}
2323
PGTZ: ${TIMEZONE}
2424
volumes:
25-
- ./.volumes/database:/var/lib/postgresql/data
25+
- ~/.volumes/database/postgresql:/var/lib/postgresql/data
2626
networks:
27-
- example-network
27+
- spring-boot-example-network
2828
tty: true
2929

3030
api:
31-
image: maven:3.8.5-openjdk-17
31+
build:
32+
context: ../api
33+
dockerfile: ../api/docker/Dockerfile.dev
34+
image: throyer/springboot/example-api-development:latest
35+
platform: linux/x86_64
3236
restart: unless-stopped
33-
container_name: crud-api
37+
container_name: ${COMPOSE_PROJECT_NAME}-api
3438
links:
3539
- database
3640
ports:
@@ -66,34 +70,50 @@ services:
6670
SWAGGER_PASSWORD: ${SWAGGER_PASSWORD}
6771
volumes:
6872
- ../api:/app
69-
- ./.volumes/maven:/root/.m2
73+
- ~/.m2:/root/.m2
7074
working_dir: /app
7175
networks:
72-
- example-network
76+
- spring-boot-example-network
7377
tty: true
7478
entrypoint: [
79+
"dockerize",
80+
"-wait",
81+
"tcp://database:${DB_PORT}",
82+
"-timeout",
83+
"20s",
7584
'mvn',
7685
'spring-boot:run',
7786
'-Dspring-boot.run.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,address=*:${API_DEBUG_PORT},suspend=n"'
7887
]
7988

8089
web:
90+
image: throyer/springboot/example-web-development:latest
8191
build:
8292
context: ../web
8393
dockerfile: ../web/docker/Dockerfile.dev
84-
image: node:16.14.2
8594
restart: unless-stopped
86-
container_name: crud-web
95+
container_name: ${COMPOSE_PROJECT_NAME}-web
96+
links:
97+
- api
8798
ports:
8899
- "${APP_PORT}:${APP_PORT}"
89100
volumes:
90101
- ../web:/app
91102
working_dir: /app
92103
networks:
93-
- example-network
104+
- spring-boot-example-network
94105
tty: true
95-
entrypoint: "npm run dev"
106+
entrypoint: [
107+
"dockerize",
108+
"-wait",
109+
"http://api:${API_PORT}/api",
110+
"-timeout",
111+
"20s",
112+
"npm",
113+
"run",
114+
"dev"
115+
]
96116

97117
networks:
98-
example-network:
118+
spring-boot-example-network:
99119
driver: bridge

.docker/docker-compose.prod.yml

Lines changed: 50 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,57 +4,88 @@ services:
44
database:
55
image: postgres:13
66
restart: unless-stopped
7-
container_name: example-api-database
7+
container_name: ${COMPOSE_PROJECT_NAME}-database
88
ports:
9-
- "5432:5432"
9+
- "${DB_PORT}:5432"
1010
environment:
1111
POSTGRES_USER: ${DB_USERNAME}
1212
POSTGRES_PASSWORD: ${DB_PASSWORD}
13-
POSTGRES_DB: example_api
14-
TZ: America/Sao_Paulo
15-
PGTZ: America/Sao_Paulo
13+
POSTGRES_DB: ${DB_NAME}
14+
TZ: ${TIMEZONE}
15+
PGTZ: ${TIMEZONE}
1616
volumes:
17-
- ./.volumes/database:/var/lib/postgresql/data
17+
- ~/.volumes/database/postgresql:/var/lib/postgresql/data
1818
networks:
19-
- example-api
19+
- spring-boot-example-network
2020
tty: true
2121

2222
api:
2323
build:
2424
context: ../api
2525
dockerfile: ../api/docker/Dockerfile.prod
26-
image: throyer/example-api:latest
26+
image: throyer/springboot/spring-boot-example-network:latest
2727
platform: linux/x86_64
2828
restart: unless-stopped
29-
container_name: example-api
29+
container_name: ${COMPOSE_PROJECT_NAME}-api
3030
links:
3131
- database
3232
ports:
3333
- 8080:80
34-
depends_on:
35-
- database
3634
environment:
37-
DB_URL: ${DB_URL}
35+
36+
# database
37+
DB_PORT: ${DB_PORT}
38+
DB_NAME: ${DB_NAME}
39+
DB_HOST: ${DB_HOST}
3840
DB_USERNAME: ${DB_USERNAME}
3941
DB_PASSWORD: ${DB_PASSWORD}
42+
DB_SHOW_SQL: ${DB_SHOW_SQL}
43+
DB_MAX_CONNECTIONS: ${DB_MAX_CONNECTIONS}
44+
45+
# security
46+
TOKEN_SECRET: ${TOKEN_SECRET}
47+
TOKEN_EXPIRATION_IN_HOURS: ${TOKEN_EXPIRATION_IN_HOURS}
48+
REFRESH_TOKEN_EXPIRATION_IN_DAYS: ${REFRESH_TOKEN_EXPIRATION_IN_DAYS}
49+
MINUTES_TO_EXPIRE_RECOVERY_CODE: ${MINUTES_TO_EXPIRE_RECOVERY_CODE}
50+
MAX_REQUESTS_PER_MINUTE: ${MAX_REQUESTS_PER_MINUTE}
51+
52+
# smtp
53+
SMTP_HOST: ${SMTP_HOST}
54+
SMTP_PORT: ${SMTP_PORT}
55+
SMTP_USERNAME: ${SMTP_USERNAME}
56+
SMTP_PASSWORD: ${SMTP_PASSWORD}
57+
58+
# swagger
59+
SWAGGER_URL: ${SWAGGER_URL}
60+
SWAGGER_USERNAME: ${SWAGGER_USERNAME}
61+
SWAGGER_PASSWORD: ${SWAGGER_PASSWORD}
4062
networks:
41-
- example-api
63+
- spring-boot-example-network
4264
tty: true
43-
entrypoint: "dockerize -wait tcp://database:5432 -timeout 20s java -jar api.jar"
65+
entrypoint: [
66+
"dockerize",
67+
"-wait",
68+
"tcp://database:${DB_PORT}",
69+
"-timeout",
70+
"20s",
71+
"java",
72+
"-jar",
73+
"api.jar"
74+
]
4475

4576
# web:
77+
# image: throyer/springboot/example-web:latest
4678
# build:
4779
# context: ../web
4880
# dockerfile: ../web/docker/Dockerfile.prod
49-
# image: throyer/example-api-front-end:latest
5081
# restart: unless-stopped
51-
# container_name: example-api-front-end
82+
# container_name: ${COMPOSE_PROJECT_NAME}-web
5283
# ports:
53-
# - "8082:8080"
84+
# - "8082:80"
5485
# networks:
55-
# - example-api
86+
# - spring-boot-example-network
5687
# tty: true
5788

5889
networks:
59-
example-api:
90+
spring-boot-example-network:
6091
driver: bridge

.vscode/launch.json

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
11
{
2-
// Use o IntelliSense para saber mais sobre os atributos possíveis.
3-
// Focalizar para exibir as descrições dos atributos existentes.
4-
// Para obter mais informações, acesse: https://go.microsoft.com/fwlink/?linkid=830387
5-
"version": "0.2.0",
6-
"configurations": [
7-
{
8-
"type": "java",
9-
"name": "Debug (local)",
10-
"request": "launch",
11-
"mainClass": "com.github.throyer.common.springboot.Application",
12-
"cwd": "${workspaceFolder}/api"
13-
},
14-
{
15-
"type": "java",
16-
"name": "Debug (Attach Docker)",
17-
"projectName": "Vendas",
18-
"request": "attach",
19-
"hostName": "127.0.0.1",
20-
"port": 8000
21-
}
22-
]
2+
"version": "0.2.0",
3+
"configurations": [
4+
{
5+
"type": "java",
6+
"name": "Debug (Attach Docker)",
7+
"projectName": "Vendas",
8+
"request": "attach",
9+
"hostName": "127.0.0.1",
10+
"port": 8000
11+
},
12+
{
13+
"type": "java",
14+
"name": "Debug (local)",
15+
"request": "launch",
16+
"mainClass": "com.github.throyer.common.springboot.Application",
17+
"cwd": "${workspaceFolder}/api"
18+
}
19+
]
2320
}

.vscode/settings.json

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,29 @@
11
{
2-
"cSpell.words": [
3-
"github",
4-
"hamcrest",
5-
"instanceof",
6-
"jooq",
7-
"servlet",
8-
"Servlet",
9-
"springboot",
10-
"springframework",
11-
"throyer",
12-
"zustand"
13-
],
14-
"java.configuration.updateBuildConfiguration": "automatic",
15-
16-
// https://github.com/halcyon/asdf-java#asdf-java
17-
"java.jdt.ls.java.home": "~/.asdf/installs/java/openjdk-17.0.1",
18-
19-
"coverage-gutters.showLineCoverage": true,
20-
"coverage-gutters.showRulerCoverage": true,
21-
"coverage-gutters.coverageFileNames": [
22-
"jacoco.xml"
23-
]
2+
// https://github.com/halcyon/asdf-java#asdf-java
3+
"java.configuration.runtimes": [
4+
{
5+
"name": "JavaSE-17",
6+
"path": "~/.asdf/installs/java/openjdk-17.0.2",
7+
"default": true
8+
},
9+
],
10+
"cSpell.words": [
11+
"github",
12+
"hamcrest",
13+
"instanceof",
14+
"jooq",
15+
"servlet",
16+
"Servlet",
17+
"springboot",
18+
"springframework",
19+
"throyer",
20+
"zustand"
21+
],
22+
"java.configuration.updateBuildConfiguration": "automatic",
23+
"explorer.compactFolders": true,
24+
"coverage-gutters.showLineCoverage": true,
25+
"coverage-gutters.showRulerCoverage": true,
26+
"coverage-gutters.coverageFileNames": [
27+
"jacoco.xml"
28+
]
2429
}

api/docker/Dockerfile.dev

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM maven:3.8.6-eclipse-temurin-17-alpine
2+
3+
WORKDIR /app
4+
5+
RUN apk add --no-cache openssl
6+
7+
ENV DOCKERIZE_VERSION v0.6.1
8+
9+
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
10+
&& tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
11+
&& rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz

api/docker/Dockerfile.prod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM maven:3.8.5-openjdk-17 as BUILDER
1+
FROM maven:3.8.6-eclipse-temurin-17-alpine as BUILDER
22

33
WORKDIR /usr/src/app
44

@@ -7,7 +7,7 @@ COPY ./src ./src
77

88
RUN --mount=type=cache,target=/root/.m2 mvn package -DskipTests
99

10-
FROM openjdk:17-alpine
10+
FROM eclipse-temurin:17-alpine
1111

1212
WORKDIR /usr/src/app
1313

api/src/main/resources/application.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ server.port=${SERVER_PORT:8080}
66

77
# logger
88
logging.level.root=info
9+
logging.level.org.springframework.security=error
910
spring.output.ansi.enabled=always
1011
spring.jpa.properties.hibernate.format_sql=true
1112
spring.jpa.show-sql=${DB_SHOW_SQL:true}

web/docker/Dockerfile.dev

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
FROM node:16.14.2
22

3-
EXPOSE 3000
4-
53
WORKDIR /app
64

5+
RUN apt-get update && apt-get install -y wget
6+
7+
ENV DOCKERIZE_VERSION v0.6.1
8+
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
9+
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
10+
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
11+
712
COPY . .
813

914
RUN npm install

web/src/hooks/use-authentication/index.ts

Whitespace-only changes.

0 commit comments

Comments
 (0)