- Добавлен файл LICENSE с лицензией GNU General Public License версии 3.0. - Создан скрипт PowerShell (build-all.ps1) для сборки двоичных файлов Windows и Linux из Windows с использованием кросс-компиляции. - Разработан скрипт сборки Linux (build-linux.sh) для сборки двоичных файлов Linux. - Реализован скрипт PowerShell (build-windows.ps1) для сборки двоичных файлов Windows. - Каждый скрипт сборки включает упаковку и генерацию контрольной суммы SHA256 для двоичных файлов.
144 lines
3.3 KiB
YAML
144 lines
3.3 KiB
YAML
# Docker Compose конфигурация для Compress
|
||
version: '3.8'
|
||
|
||
services:
|
||
# Основное приложение Compress
|
||
compress:
|
||
build:
|
||
context: .
|
||
dockerfile: Dockerfile
|
||
args:
|
||
- GO_VERSION=1.24
|
||
image: compress:latest
|
||
container_name: compress-app
|
||
|
||
# Перезапуск при ошибках
|
||
restart: unless-stopped
|
||
|
||
# Переменные окружения
|
||
environment:
|
||
- APP_CONFIG_PATH=/app/config/config.yaml
|
||
- APP_LOG_LEVEL=info
|
||
- APP_INPUT_DIR=/app/input
|
||
- APP_OUTPUT_DIR=/app/output
|
||
- APP_LOGS_DIR=/app/logs
|
||
|
||
# Монтирование томов
|
||
volumes:
|
||
# Входные PDF файлы
|
||
- ./input_pdfs:/app/input:ro
|
||
# Выходная папка для сжатых файлов
|
||
- ./output_pdfs:/app/output:rw
|
||
# Конфигурация
|
||
- ./config.yaml:/app/config/config.yaml:ro
|
||
# Логи
|
||
- ./logs:/app/logs:rw
|
||
|
||
# Ограничения ресурсов
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
cpus: '2.0'
|
||
memory: 1G
|
||
reservations:
|
||
cpus: '0.5'
|
||
memory: 256M
|
||
|
||
# Сеть
|
||
networks:
|
||
- compress-network
|
||
|
||
# Лейблы для мониторинга
|
||
labels:
|
||
- "traefik.enable=false"
|
||
- "com.compress.description=Сompress Application"
|
||
- "com.compress.version=1.0.0"
|
||
|
||
# Healthcheck
|
||
healthcheck:
|
||
test: ["CMD", "compress", "--version"]
|
||
interval: 30s
|
||
timeout: 10s
|
||
retries: 3
|
||
start_period: 10s
|
||
|
||
# Файловый браузер для управления файлами (опционально)
|
||
filebrowser:
|
||
image: filebrowser/filebrowser:v2
|
||
container_name: compress-filebrowser
|
||
restart: unless-stopped
|
||
|
||
ports:
|
||
- "8080:80"
|
||
|
||
volumes:
|
||
- ./input_pdfs:/srv/input:rw
|
||
- ./output_pdfs:/srv/output:rw
|
||
- ./filebrowser.db:/database/filebrowser.db
|
||
- ./filebrowser-config.json:/config/settings.json
|
||
|
||
environment:
|
||
- FB_DATABASE=/database/filebrowser.db
|
||
- FB_CONFIG=/config/settings.json
|
||
|
||
command: --config /config/settings.json
|
||
|
||
networks:
|
||
- compress-network
|
||
|
||
labels:
|
||
- "traefik.enable=true"
|
||
- "traefik.http.routers.filebrowser.rule=Host(`filebrowser.localhost`)"
|
||
- "traefik.http.routers.filebrowser.entrypoints=web"
|
||
- "traefik.http.services.filebrowser.loadbalancer.server.port=80"
|
||
|
||
# Мониторинг логов (опционально)
|
||
log-viewer:
|
||
image: gohutool/docker-log-viewer:latest
|
||
container_name: compress-logs
|
||
restart: unless-stopped
|
||
|
||
ports:
|
||
- "8081:8080"
|
||
|
||
volumes:
|
||
- ./logs:/logs:ro
|
||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||
|
||
environment:
|
||
- LOG_FILES=/logs/*.log
|
||
|
||
networks:
|
||
- compress-network
|
||
|
||
# Сети
|
||
networks:
|
||
compress-network:
|
||
driver: bridge
|
||
ipam:
|
||
config:
|
||
- subnet: 172.20.0.0/16
|
||
|
||
# Именованные тома
|
||
volumes:
|
||
input_pdfs:
|
||
driver: local
|
||
driver_opts:
|
||
type: none
|
||
device: ${PWD}/input_pdfs
|
||
o: bind
|
||
|
||
output_pdfs:
|
||
driver: local
|
||
driver_opts:
|
||
type: none
|
||
device: ${PWD}/output_pdfs
|
||
o: bind
|
||
|
||
logs:
|
||
driver: local
|
||
driver_opts:
|
||
type: none
|
||
device: ${PWD}/logs
|
||
o: bind
|