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