added docker container
This commit is contained in:
17
Dockerfile
Normal file
17
Dockerfile
Normal 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"]
|
||||
30
README.md
30
README.md
@@ -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
17
compose.yml
Normal 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
|
||||
Reference in New Issue
Block a user