Коммит 4f994939 создал по автору Radch-enko's avatar Radch-enko
Просмотр файлов

Add Docker setup for development and production environments

- Introduced Dockerfiles and `docker-compose.yml` for both development and production configurations.
- Added `.env.example` files for environment variable templating.
- Updated `.gitignore` to exclude `.env` and `.jar` files in deployment directories.
- Removed `jwt` settings from `application.yml` to externalize secrets management.
владелец 9566cc8b
...@@ -81,4 +81,7 @@ coverage/ ...@@ -81,4 +81,7 @@ coverage/
/oldProject/ /oldProject/
/clients/tablet/composeApp/google-services.json /clients/tablet/composeApp/google-services.json
/local.properties /local.properties
/deploy/ /deploy/dev/.env
/deploy/dev/*.jar
/deploy/prod/.env
/deploy/prod/*.jar
...@@ -60,11 +60,6 @@ logging: ...@@ -60,11 +60,6 @@ logging:
org.hibernate.type.descriptor.sql.BasicBinder: TRACE org.hibernate.type.descriptor.sql.BasicBinder: TRACE
band.effective.office.backend: ${LOG_LEVEL:DEBUG} band.effective.office.backend: ${LOG_LEVEL:DEBUG}
jwt:
secret: ${JWT_SECRET:defaultSecretKeyForDevelopmentOnly}
access-token-expiration-ms: ${JWT_ACCESS_TOKEN_EXPIRATION_MS:900000}
refresh-token-expiration-ms: ${JWT_REFRESH_TOKEN_EXPIRATION_MS:2592000000}
application: application:
url: ${APPLICATION_URL:http://localhost:8080} url: ${APPLICATION_URL:http://localhost:8080}
......
POSTGRES_DB=yourdatabasename
POSTGRES_USER=youruser
POSTGRES_PASSWORD=youruser
SPRING_DATASOURCE_URL=yourpathtodatabase
TEST_CALENDARS=your calendars
TEST_APPLICATION_URL=your test application url
LABEL=your domain label
\ No newline at end of file
FROM eclipse-temurin:17-jre
# Устанавливаем curl (если нужен для healthcheck'ов)
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Копируем JAR-файл из текущего контекста
COPY *.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
\ No newline at end of file
# docker-compose.yml (production-ready template)
# Replace all environment variables in a `.env` file (not committed)
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: effective-office-app-dev
expose:
- "8080"
environment:
- SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL}
- SPRING_DATASOURCE_USERNAME=${POSTGRES_USER}
- SPRING_DATASOURCE_PASSWORD=${POSTGRES_PASSWORD}
depends_on:
db:
condition: service_healthy
networks:
- effective-office-network-dev
- caddy
restart: unless-stopped
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8080/api/actuator/health" ]
interval: 30s
timeout: 10s
retries: 5
start_period: 40s
labels:
caddy: ${LABEL}
caddy.reverse_proxy: "{{upstreams 8080}}"
db:
image: postgres:15-alpine
container_name: effective-office-db-dev
ports:
- "5433:5432"
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- postgres-data-dev:/var/lib/postgresql/data
networks:
- effective-office-network-dev
restart: unless-stopped
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}" ]
interval: 10s
timeout: 5s
retries: 5
networks:
effective-office-network-dev:
driver: bridge
caddy:
external: true
volumes:
postgres-data-dev:
name: effective-office-dev-db-data
\ No newline at end of file
POSTGRES_DB=yourdatabasename
POSTGRES_USER=youruser
POSTGRES_PASSWORD=youruser
SPRING_DATASOURCE_URL=yourpathtodatabase
CALENDARS=your calendars
APPLICATION_URL=your application url
LABEL=your domain label
\ No newline at end of file
FROM eclipse-temurin:17-jre
# Устанавливаем curl (если нужен для healthcheck'ов)
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Копируем JAR-файл из текущего контекста
COPY *.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
\ No newline at end of file
# docker-compose.yml (production-ready template)
# Replace all environment variables in a `.env` file (not committed)
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: effective-office-app
expose:
- "8080"
environment:
- SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL}
- SPRING_DATASOURCE_USERNAME=${POSTGRES_USER}
- SPRING_DATASOURCE_PASSWORD=${POSTGRES_PASSWORD}
depends_on:
db:
condition: service_healthy
networks:
- effective-office-network
- caddy
restart: unless-stopped
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8080/api/actuator/health" ]
interval: 30s
timeout: 10s
retries: 5
start_period: 40s
labels:
caddy: ${LABEL}
caddy.reverse_proxy: "{{upstreams 8080}}"
db:
image: postgres:15-alpine
container_name: effective-office-db
ports:
- "5432:5432"
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- deploy_postgres-data:/var/lib/postgresql/data
networks:
- effective-office-network
restart: unless-stopped
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
interval: 10s
timeout: 5s
retries: 5
caddy:
image: lucaslorentz/caddy-docker-proxy:latest
container_name: effective-office-caddy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- caddy_data:/data
- caddy_config:/config
environment:
- CADDY_INGRESS_NETWORK=caddy
networks:
- caddy
restart: unless-stopped
networks:
effective-office-network:
driver: bridge
caddy:
external: true
volumes:
deploy_postgres-data:
external: true
caddy_data:
caddy_config:
\ No newline at end of file
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать