v
vibecode
Все скиллы
01Скилл
Деплой
vibecode
docker-compose + Caddy

Готовый docker-compose с Caddy reverse-proxy

Полный стек: твоё приложение + Postgres + Caddy с авто-HTTPS. Один файл — деплой на любой сервер за 5 минут.


01aКогда брать

Для деплоя любого web-приложения на свой Hetzner. Caddy сам выписывает Let's Encrypt сертификат при первом запросе.

02Куда положить
<project>/docker-compose.yml

Создай эту папку и файл (если их нет), вставь содержимое ниже. Затем в Claude Code: /exit и запусти claude заново — команда появится.

03Содержимое

Скопируй всё что внутри блока и вставь в файл по пути выше.

docker-compose.yml
1# Замени YOURAPP / yourdomain.com на свои2services:3  app:4    build: .5    container_name: yourapp6    restart: unless-stopped7    env_file:8      - /opt/yourapp/.env9    depends_on:10      - postgres11    networks:12      - web13      - internal14    healthcheck:15      test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000/healthz"]16      interval: 30s17      timeout: 5s18      retries: 319 20  postgres:21    image: postgres:16-alpine22    container_name: yourapp-postgres23    restart: unless-stopped24    environment:25      POSTGRES_DB: yourapp26      POSTGRES_USER: yourapp27      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}28    volumes:29      - pgdata:/var/lib/postgresql/data30    networks:31      - internal32    healthcheck:33      test: ["CMD-SHELL", "pg_isready -U yourapp"]34      interval: 10s35      timeout: 5s36      retries: 537 38  caddy:39    image: caddy:2-alpine40    container_name: yourapp-caddy41    restart: unless-stopped42    ports:43      - "80:80"44      - "443:443"45    volumes:46      - /opt/yourapp/Caddyfile:/etc/caddy/Caddyfile:ro47      - caddy_data:/data48    networks:49      - web50 51networks:52  web: {}53  internal: {}54 55volumes:56  pgdata: {}57  caddy_data: {}
04Как использовать

Примеры команд

  • 01scp docker-compose.yml server:/opt/myapp/
  • 02ssh server 'cd /opt/myapp && docker compose up -d --build'