From 867137a5faf9ac700edfef41b3baa3c63aa258e5 Mon Sep 17 00:00:00 2001 From: RoyceDa Date: Wed, 11 Feb 2026 10:15:02 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D1=89=D0=B0=D1=8F=20=D1=81=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D0=B5=D0=BC=D0=B0=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=83=20=D1=80=D0=B5=D0=BF=D0=BE=D0=B7=D0=B8=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=B5=D0=B2,=20=D0=BE=D0=BF=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D1=80?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 10 --- build/Dockerfile | 12 +++ .../docker-compose.dev.yml | 0 build/docker-compose.prod.yml | 23 ++++++ docker-compose.prod.yml | 18 ----- pom.xml | 78 ++++++++++++++++++- src/main/java/com/rosetta/im/Boot.java | 4 +- src/main/java/com/rosetta/im/Main.java | 26 ++++++- 8 files changed, 139 insertions(+), 32 deletions(-) delete mode 100644 Dockerfile create mode 100644 build/Dockerfile rename docker-compose.dev.yml => build/docker-compose.dev.yml (100%) create mode 100644 build/docker-compose.prod.yml delete mode 100644 docker-compose.prod.yml diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index eb25d9b..0000000 --- a/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM openjdk:27-ea-jdk-slim-trixie - - -WORKDIR /app - - -COPY rosetta-server.jar server.jar - - -CMD ["java", "-jar", "server.jar"] \ No newline at end of file diff --git a/build/Dockerfile b/build/Dockerfile new file mode 100644 index 0000000..cabc99c --- /dev/null +++ b/build/Dockerfile @@ -0,0 +1,12 @@ +FROM eclipse-temurin:21-jre-alpine + +WORKDIR /app + +# Копируем готовый JAR со всеми зависимостями +COPY app.jar ./app.jar + +# Открываем порт (может быть переопределён через ENV) +EXPOSE ${PORT:-3000} + +# Запускаем приложение с портом из окружения +CMD ["sh", "-c", "java -jar app.jar ${PORT:-3000}"] \ No newline at end of file diff --git a/docker-compose.dev.yml b/build/docker-compose.dev.yml similarity index 100% rename from docker-compose.dev.yml rename to build/docker-compose.dev.yml diff --git a/build/docker-compose.prod.yml b/build/docker-compose.prod.yml new file mode 100644 index 0000000..4966d7b --- /dev/null +++ b/build/docker-compose.prod.yml @@ -0,0 +1,23 @@ +version: '3.8' + +services: + app: + build: + context: . + dockerfile: Dockerfile + container_name: rosetta-server + ports: + - "${PORT:-3000}:${PORT:-3000}" + environment: + - PORT=${PORT:-3000} # Устанавливаем порт по умолчанию 3000, может быть переопределён через переменную окружения + depends_on: + - db + + db: + image: postgres:latest + environment: + POSTGRES_DB: your_database + POSTGRES_USER: your_user + POSTGRES_PASSWORD: your_password + ports: + - "5432:5432" \ No newline at end of file diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml deleted file mode 100644 index 8e9b3d8..0000000 --- a/docker-compose.prod.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: '3.8' - -services: - app: - build: . - ports: - - "8881:8881" - depends_on: - - db - - db: - image: postgres:latest - environment: - POSTGRES_DB: your_database - POSTGRES_USER: your_user - POSTGRES_PASSWORD: your_password - ports: - - "5432:5432" \ No newline at end of file diff --git a/pom.xml b/pom.xml index d8ff5ef..eee9f12 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,82 @@ snakeyaml 2.5 - + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.6.0 + + + package + + single + + + + + com.rosetta.im.Main + + + + jar-with-dependencies + + app + false + + + + + + + org.apache.maven.plugins + maven-clean-plugin + 3.3.2 + + + pre-clean + + true + + + ${project.basedir}/build + + classes/ + + + + + + clean + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + 3.1.0 + + + package + + + + + + + + + run + + + + + + \ No newline at end of file diff --git a/src/main/java/com/rosetta/im/Boot.java b/src/main/java/com/rosetta/im/Boot.java index 24c6672..2a3770f 100644 --- a/src/main/java/com/rosetta/im/Boot.java +++ b/src/main/java/com/rosetta/im/Boot.java @@ -62,14 +62,14 @@ public class Boot { private Configuration configuration; private ServerConfiguration serverConfiguration; - public Boot() { + public Boot(int port) { this.packetManager = new PacketManager(); this.eventManager = new EventManager(); this.onlineManager = new OnlineManager(); this.logger = new Logger(LogLevel.INFO); this.serverAdapter = new ServerAdapter(this.eventManager); this.server = new Server(new Settings( - 8881, + port, 30 ), packetManager, this.serverAdapter); this.clientManager = new ClientManager(server); diff --git a/src/main/java/com/rosetta/im/Main.java b/src/main/java/com/rosetta/im/Main.java index a2e0b6f..4b8defc 100644 --- a/src/main/java/com/rosetta/im/Main.java +++ b/src/main/java/com/rosetta/im/Main.java @@ -2,13 +2,37 @@ package com.rosetta.im; public class Main { public static void main(String[] args) { + int port = resolvePort(args); /** * Регистрация всех пакетов и их обработчиков */ - Boot boot = new Boot(); + Boot boot = new Boot(port); /** * Стартуем сервер */ boot.bootstrap(); } + + private static int resolvePort(String[] args) { + // Если порт указан аргументом — используем его. + if (args != null && args.length > 0) { + try { + return Integer.parseInt(args[0]); + } catch (NumberFormatException ignored) { + } + } + + // Если порт задан в окружении — используем его. + String envPort = System.getenv("PORT"); + if (envPort != null && !envPort.isBlank()) { + try { + return Integer.parseInt(envPort); + } catch (NumberFormatException ignored) { + } + } + + // Значение по умолчанию. + return 8080; + } + } \ No newline at end of file