From 01332c7db563309a843714750f57a16c95691672 Mon Sep 17 00:00:00 2001 From: vladp Date: Fri, 6 Feb 2026 03:31:41 +0700 Subject: [PATCH] NC_YA --- Dockerfile | 3 +- docker-compose.local.yml | 73 ++++++++++++++++++++++++ docker-compose.prod.yml | 49 ++++++++++++++++ env.prod | 2 + src/main/resources/application-dev.yaml | 2 - src/main/resources/application-local.yml | 0 src/main/resources/application-prod.yaml | 2 - src/main/resources/application-prod.yml | 8 +++ src/main/resources/application.yaml | 26 ++++----- 9 files changed, 144 insertions(+), 21 deletions(-) create mode 100644 docker-compose.local.yml create mode 100644 docker-compose.prod.yml create mode 100644 env.prod delete mode 100644 src/main/resources/application-dev.yaml create mode 100644 src/main/resources/application-local.yml delete mode 100644 src/main/resources/application-prod.yaml create mode 100644 src/main/resources/application-prod.yml diff --git a/Dockerfile b/Dockerfile index 03d3325..c87017c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,4 +16,5 @@ RUN mkdir -p /data/uploads && chmod 755 /data/uploads EXPOSE 8080 -CMD ["java", "-jar", "app.jar"] \ No newline at end of file +# По умолчанию используем prod профиль в контейнере +CMD ["java", "-jar", "app.jar", "--spring.profiles.active=prod"] \ No newline at end of file diff --git a/docker-compose.local.yml b/docker-compose.local.yml new file mode 100644 index 0000000..9ee1597 --- /dev/null +++ b/docker-compose.local.yml @@ -0,0 +1,73 @@ +version: '3.9' + +services: + storage: + image: alpine:latest + container_name: file-storage-local + networks: + - app-network-local + volumes: + - uploads_data_local:/storage:rw + command: tail -f /dev/null + restart: unless-stopped + + db: + image: postgres:17.7 + restart: always + environment: + POSTGRES_DB: no_copy_ + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_SHARED_BUFFERS: 512MB + POSTGRES_EFFECTIVE_CACHE_SIZE: 1536MB + ports: + - "54320:5432" + volumes: + - pgdata_local:/var/lib/postgresql/data + - ./init-scripts:/docker-entrypoint-initdb.d:ro + container_name: postgres-local + networks: + app-network-local: + aliases: + - database + + app: + build: . + container_name: app-backend-local + environment: + JAVA_TOOL_OPTIONS: "-Xmx2g -Xms1g" + FILE_STORAGE_PATH: /data/uploads + POSTGRES_DB: no_copy_ + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_PORT: 5432 + POSTGRES_HOST: db + # Используем local профиль + SPRING_PROFILES_ACTIVE: local + YANDEX_API_KEY: AQVNyaVaUmgUb1GMCtf5zSEqFxy0woXrcMOOB43q + YANDEX_FOLDER_ID: b1gokpdbm6qfpsou8pcd + YANDEX_SEARCH_URL: "https://searchapi.api.cloud.yandex.net/v2/image/search_by_image" + depends_on: + - db + ports: + - "8080:8080" + networks: + app-network-local: + aliases: + - app + - backend + volumes: + - uploads_data_local:/data/uploads:rw + healthcheck: + test: [ "CMD", "curl", "-f", "http://localhost:8080/actuator/health" ] + interval: 30s + timeout: 10s + retries: 3 + +volumes: + pgdata_local: + uploads_data_local: + +networks: + app-network-local: + driver: bridge \ No newline at end of file diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..09e3ea8 --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,49 @@ +version: '3.9' + +services: + storage: + image: alpine:latest + container_name: file-storage + networks: + - app-network + volumes: + - uploads_data:/storage:rw + command: tail -f /dev/null + restart: unless-stopped + + app: + build: . + container_name: app-backend + environment: + JAVA_TOOL_OPTIONS: "-Xmx2g -Xms1g" + FILE_STORAGE_PATH: /data/uploads + # Данные для Yandex Cloud БД + YC_DB_USER: ${YC_DB_USER} + YC_DB_PASSWORD: ${YC_DB_PASSWORD} + # Используем prod профиль + SPRING_PROFILES_ACTIVE: prod + YANDEX_API_KEY: AQVNyaVaUmgUb1GMCtf5zSEqFxy0woXrcMOOB43q + YANDEX_FOLDER_ID: b1gokpdbm6qfpsou8pcd + YANDEX_SEARCH_URL: "https://searchapi.api.cloud.yandex.net/v2/image/search_by_image" + ports: + - "80:8080" + networks: + app-network: + aliases: + - app + - backend + volumes: + - uploads_data:/data/uploads:rw + healthcheck: + test: [ "CMD", "curl", "-f", "http://localhost:8080/actuator/health" ] + interval: 30s + timeout: 10s + retries: 3 + +volumes: + uploads_data: + +networks: + app-network: + external: true + driver: bridge \ No newline at end of file diff --git a/env.prod b/env.prod new file mode 100644 index 0000000..2b15128 --- /dev/null +++ b/env.prod @@ -0,0 +1,2 @@ +YC_DB_USER=test +YC_DB_PASSWORD=testtest \ No newline at end of file diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml deleted file mode 100644 index bd1102b..0000000 --- a/src/main/resources/application-dev.yaml +++ /dev/null @@ -1,2 +0,0 @@ -server: - baseurl: "http://localhost" \ No newline at end of file diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/application-prod.yaml b/src/main/resources/application-prod.yaml deleted file mode 100644 index 2a35858..0000000 --- a/src/main/resources/application-prod.yaml +++ /dev/null @@ -1,2 +0,0 @@ -server: - baseurl: "http://92.242.61.23" \ No newline at end of file diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 0000000..d8d10fb --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +1,8 @@ +spring: + datasource: + url: jdbc:postgresql://rc1a-7osqmsdaf27d2ieh.mdb.yandexcloud.net:6432/ncp-test?ssl=true&sslmode=require + username: ${YC_DB_USER:test} + password: ${YC_DB_PASSWORD:testtest} + + flyway: + enabled: false \ No newline at end of file diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index fea82f1..ccce6d9 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -1,7 +1,10 @@ spring: -# config: -# activate: -# on-profile: ${SPRING_PROFILES_ACTIVE:dev} + config: + activate: + on-profile: default + profiles: + # По умолчанию используем local для разработки + active: ${SPRING_PROFILES_ACTIVE:local} mail: host: smtp.gmail.com @@ -15,24 +18,15 @@ spring: starttls: enable: true - # mail: - # host: postfix - # port: 25 - # username: noreply@nocopy.com - # password: nocopy!nocopy! - # properties: - # mail.smtp.auth: false - # mail.smtp.starttls.enable: false - # mail.debug: true - flyway: enabled: true baseline-on-migrate: true datasource: - url: jdbc:postgresql://${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB} - username: ${POSTGRES_USER} - password: ${POSTGRES_PASSWORD} + # Настройки по умолчанию для local разработки + url: jdbc:postgresql://${POSTGRES_HOST:localhost}:${POSTGRES_PORT:54320}/${POSTGRES_DB:no_copy_} + username: ${POSTGRES_USER:postgres} + password: ${POSTGRES_PASSWORD:postgres} driver-class-name: org.postgresql.Driver jpa: