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