Docker Update
This commit is contained in:
49
.dockerignore
Normal file
49
.dockerignore
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
# Node modules
|
||||||
|
node_modules
|
||||||
|
npm-debug.log
|
||||||
|
yarn-error.log
|
||||||
|
|
||||||
|
# Git
|
||||||
|
.git
|
||||||
|
.gitignore
|
||||||
|
.gitattributes
|
||||||
|
|
||||||
|
# Docker
|
||||||
|
Dockerfile
|
||||||
|
.dockerignore
|
||||||
|
docker-compose.yml
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.vscode
|
||||||
|
.idea
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Environment
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Documentation
|
||||||
|
README.md
|
||||||
|
*.md
|
||||||
|
|
||||||
|
# Tests
|
||||||
|
test
|
||||||
|
tests
|
||||||
|
*.test.js
|
||||||
|
*.spec.js
|
||||||
|
|
||||||
|
# Build
|
||||||
|
dist
|
||||||
|
build
|
||||||
|
*.map
|
||||||
112
DOCKER.md
Normal file
112
DOCKER.md
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
# Docker инструкции
|
||||||
|
|
||||||
|
## Быстрый старт
|
||||||
|
|
||||||
|
### Вариант 1: Docker Compose (рекомендуется)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Сборка и запуск
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Просмотр логов
|
||||||
|
docker-compose logs -f
|
||||||
|
|
||||||
|
# Остановка
|
||||||
|
docker-compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
### Вариант 2: Docker напрямую
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Сборка образа
|
||||||
|
docker build -t star-wars-hearthstone .
|
||||||
|
|
||||||
|
# Запуск контейнера
|
||||||
|
docker run -d \
|
||||||
|
--name star-wars-game \
|
||||||
|
-p 3542:3542 \
|
||||||
|
--restart unless-stopped \
|
||||||
|
star-wars-hearthstone
|
||||||
|
|
||||||
|
# Просмотр логов
|
||||||
|
docker logs -f star-wars-game
|
||||||
|
|
||||||
|
# Остановка
|
||||||
|
docker stop star-wars-game
|
||||||
|
docker rm star-wars-game
|
||||||
|
```
|
||||||
|
|
||||||
|
## Доступ к игре
|
||||||
|
|
||||||
|
После запуска контейнера игра будет доступна по адресу:
|
||||||
|
- **Локально**: `http://localhost:3542`
|
||||||
|
- **По сети**: `http://[IP-адрес-сервера]:3542`
|
||||||
|
|
||||||
|
## Изменение порта
|
||||||
|
|
||||||
|
Если нужно использовать другой порт, измените в `docker-compose.yml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
ports:
|
||||||
|
- "8080:3542" # Внешний:Внутренний
|
||||||
|
```
|
||||||
|
|
||||||
|
Или при запуске через `docker run`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d -p 8080:3542 --name star-wars-game star-wars-hearthstone
|
||||||
|
```
|
||||||
|
|
||||||
|
## Переменные окружения
|
||||||
|
|
||||||
|
Можно задать через `docker-compose.yml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
environment:
|
||||||
|
- PORT=3542
|
||||||
|
- NODE_ENV=production
|
||||||
|
```
|
||||||
|
|
||||||
|
Или через `docker run`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
-p 3542:3542 \
|
||||||
|
-e PORT=3542 \
|
||||||
|
-e NODE_ENV=production \
|
||||||
|
--name star-wars-game \
|
||||||
|
star-wars-hearthstone
|
||||||
|
```
|
||||||
|
|
||||||
|
## Проверка работоспособности
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка статуса контейнера
|
||||||
|
docker ps
|
||||||
|
|
||||||
|
# Проверка healthcheck
|
||||||
|
docker inspect star-wars-game | grep -A 10 Health
|
||||||
|
|
||||||
|
# Проверка через curl
|
||||||
|
curl http://localhost:3542
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пересборка образа
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# С Docker Compose
|
||||||
|
docker-compose build --no-cache
|
||||||
|
|
||||||
|
# С Docker напрямую
|
||||||
|
docker build --no-cache -t star-wars-hearthstone .
|
||||||
|
```
|
||||||
|
|
||||||
|
## Удаление
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Остановка и удаление контейнера
|
||||||
|
docker-compose down
|
||||||
|
|
||||||
|
# Удаление образа
|
||||||
|
docker rmi star-wars-hearthstone
|
||||||
|
```
|
||||||
40
Dockerfile
Normal file
40
Dockerfile
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Star Wars Hearthstone - Dockerfile
|
||||||
|
FROM node:18-alpine
|
||||||
|
|
||||||
|
# Метаданные
|
||||||
|
LABEL maintainer="Star Wars Hearthstone"
|
||||||
|
LABEL description="PvP Star Wars card game over LAN"
|
||||||
|
|
||||||
|
# Установка рабочей директории
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Копирование package.json и package-lock.json (для лучшего кэширования)
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
# Установка зависимостей
|
||||||
|
RUN npm ci --only=production && \
|
||||||
|
npm cache clean --force
|
||||||
|
|
||||||
|
# Копирование всех файлов приложения
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Создание пользователя без root прав для безопасности
|
||||||
|
RUN addgroup -g 1001 -S nodejs && \
|
||||||
|
adduser -S nodejs -u 1001 && \
|
||||||
|
chown -R nodejs:nodejs /app
|
||||||
|
|
||||||
|
USER nodejs
|
||||||
|
|
||||||
|
# Открытие порта
|
||||||
|
EXPOSE 3542
|
||||||
|
|
||||||
|
# Переменные окружения
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
ENV PORT=3542
|
||||||
|
|
||||||
|
# Healthcheck
|
||||||
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||||
|
CMD node -e "require('http').get('http://localhost:3542', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"
|
||||||
|
|
||||||
|
# Запуск приложения
|
||||||
|
CMD ["node", "server.js"]
|
||||||
26
docker-compose.yml
Normal file
26
docker-compose.yml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
star-wars-game:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: star-wars-hearthstone
|
||||||
|
ports:
|
||||||
|
- "3542:3542"
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=production
|
||||||
|
- PORT=3542
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- star-wars-network
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "node", "-e", "require('http').get('http://localhost:3542', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 3s
|
||||||
|
retries: 3
|
||||||
|
start_period: 5s
|
||||||
|
|
||||||
|
networks:
|
||||||
|
star-wars-network:
|
||||||
|
driver: bridge
|
||||||
33
docker-run.bat
Normal file
33
docker-run.bat
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
@echo off
|
||||||
|
REM Скрипт для быстрого запуска Docker контейнера (Windows)
|
||||||
|
|
||||||
|
echo 🚀 Запуск Star Wars Hearthstone в Docker...
|
||||||
|
|
||||||
|
REM Проверка наличия Docker
|
||||||
|
docker --version >nul 2>&1
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo ❌ Docker не установлен. Установите Docker Desktop и попробуйте снова.
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Проверка наличия docker-compose
|
||||||
|
docker-compose --version >nul 2>&1
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo 📦 Используется Docker напрямую...
|
||||||
|
docker build -t star-wars-hearthstone .
|
||||||
|
docker run -d --name star-wars-game -p 3542:3542 --restart unless-stopped star-wars-hearthstone
|
||||||
|
echo ✅ Сервер запущен!
|
||||||
|
echo 🌐 Игра доступна по адресу: http://localhost:3542
|
||||||
|
echo 📋 Просмотр логов: docker logs -f star-wars-game
|
||||||
|
echo 🛑 Остановка: docker stop star-wars-game ^&^& docker rm star-wars-game
|
||||||
|
) else (
|
||||||
|
echo 📦 Используется docker-compose...
|
||||||
|
docker-compose up -d --build
|
||||||
|
echo ✅ Сервер запущен!
|
||||||
|
echo 🌐 Игра доступна по адресу: http://localhost:3542
|
||||||
|
echo 📋 Просмотр логов: docker-compose logs -f
|
||||||
|
echo 🛑 Остановка: docker-compose down
|
||||||
|
)
|
||||||
|
|
||||||
|
pause
|
||||||
34
docker-run.sh
Normal file
34
docker-run.sh
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Скрипт для быстрого запуска Docker контейнера
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "🚀 Запуск Star Wars Hearthstone в Docker..."
|
||||||
|
|
||||||
|
# Проверка наличия Docker
|
||||||
|
if ! command -v docker &> /dev/null; then
|
||||||
|
echo "❌ Docker не установлен. Установите Docker и попробуйте снова."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Проверка наличия docker-compose
|
||||||
|
if command -v docker-compose &> /dev/null; then
|
||||||
|
echo "📦 Используется docker-compose..."
|
||||||
|
docker-compose up -d --build
|
||||||
|
echo "✅ Сервер запущен!"
|
||||||
|
echo "🌐 Игра доступна по адресу: http://localhost:3542"
|
||||||
|
echo "📋 Просмотр логов: docker-compose logs -f"
|
||||||
|
echo "🛑 Остановка: docker-compose down"
|
||||||
|
else
|
||||||
|
echo "📦 Используется Docker напрямую..."
|
||||||
|
docker build -t star-wars-hearthstone .
|
||||||
|
docker run -d \
|
||||||
|
--name star-wars-game \
|
||||||
|
-p 3542:3542 \
|
||||||
|
--restart unless-stopped \
|
||||||
|
star-wars-hearthstone
|
||||||
|
echo "✅ Сервер запущен!"
|
||||||
|
echo "🌐 Игра доступна по адресу: http://localhost:3542"
|
||||||
|
echo "📋 Просмотр логов: docker logs -f star-wars-game"
|
||||||
|
echo "🛑 Остановка: docker stop star-wars-game && docker rm star-wars-game"
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user