added docker container

This commit is contained in:
2026-04-19 23:47:16 +03:00
parent f9eeb6f461
commit f54b65caa2
3 changed files with 64 additions and 0 deletions

17
Dockerfile Normal file
View File

@@ -0,0 +1,17 @@
FROM dart:stable-sdk
WORKDIR /app
# sqlite3 package uses system libsqlite3 at runtime.
RUN apt-get update \
&& apt-get install -y --no-install-recommends libsqlite3-0 curl \
&& rm -rf /var/lib/apt/lists/*
COPY pubspec.yaml pubspec.lock ./
RUN dart pub get
COPY . .
EXPOSE 8080
CMD ["dart", "run", "bin/vpn_server.dart"]

View File

@@ -23,6 +23,8 @@
## Установка и запуск
### Локально (Dart)
1. Установить зависимости:
```bash
@@ -37,6 +39,34 @@ dart run bin/vpn_server.dart
После запуска сервер доступен по адресу `http://127.0.0.1:8080`.
### Через Docker
Собрать и запустить контейнер:
```bash
docker build -t vpn_server .
docker run --rm -p 8080:8080 -v "$(pwd)/data:/app/data" vpn_server
```
`-v "$(pwd)/data:/app/data"` сохраняет SQLite-базу между перезапусками.
### Через Docker Compose
В проекте есть `compose.yml` с `healthcheck` (проверка `GET /connections`).
Запуск:
```bash
docker compose -f compose.yml up --build -d
```
Проверка статуса и health:
```bash
docker compose -f compose.yml ps
docker inspect --format='{{json .State.Health}}' vpn_server
```
## API
### `GET /connections`

17
compose.yml Normal file
View File

@@ -0,0 +1,17 @@
services:
vpn_server:
build:
context: .
dockerfile: Dockerfile
container_name: vpn_server
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./data:/app/data
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:8080/connections > /dev/null || exit 1"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s