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