Skip to content

Instantly share code, notes, and snippets.

@creadone
Last active April 14, 2025 17:14
Show Gist options
  • Select an option

  • Save creadone/b70cc7d16c82f98d593a14947ef3417b to your computer and use it in GitHub Desktop.

Select an option

Save creadone/b70cc7d16c82f98d593a14947ef3417b to your computer and use it in GitHub Desktop.
Конфиг для деплоя с помощью Kamal
# Название приложения. Если сделать `docker ps` контейнеры буду называться billing-*
service: billing
# Название образа приложения в регистре
image: billing-bundle
# Если не указать будет использован root. Юзер должен входить в группу docker
ssh:
user: chucknorris
# Сколько старых контейнеров и образов храним.
retain_containers: 3
# Серверы и их роли для деплоя (в данном случае все на одном)
servers:
web:
hosts:
- 168.0.0.1
# Настройки приватного регистра
registry:
server: selcloud.ru/abcd
username: token
password:
- REGISTRY_PASSWORD
# Запрещаем Kamal-proxy получать сертификаты и указываем порт, на котором крутится приложение
proxy:
ssl: false
app_port: 3000
forward_headers: true
# Каmal после развертывания контейнера идет в порт приложения и делает запрос — таким образом он понимает, что все запустилось, иначе пишет в консоль о проблеме
healthcheck:
interval: 10s
timeout: 60s
# Основные настройки билдера (можно билдить на отдельном сервере, см. https://kamal-deploy.org/docs/configuration/builders/#remote)
builder:
arch: amd64
context: backend
dockerfile: backend/Dockerfile
# Общие переменные окружения
env:
clear:
DB_HOST: billing-pgbouncer
DB_PORT: 6432
POSTGRES_USER: billing_user
POSTGRES_DB: billing_production
secret:
- RAILS_MASTER_KEY
- POSTGRES_PASSWORD
# Конфигурация аксессуаров
accessories:
postgres:
image: postgres:16.8
roles:
- web
env:
clear:
POSTGRES_USER: billing_user
POSTGRES_DB: billing_production
secret:
- POSTGRES_PASSWORD
directories:
- /var/lib/postgresql/data:/var/lib/postgresql/data
pgbouncer:
image: edoburu/pgbouncer:latest
roles:
- web
env:
clear:
LISTEN_PORT: 6432
DB_USER: billing_user
DB_NAME: billing_production
DB_HOST: billing-postgres
DB_PORT: 5432
POOL_MODE: transaction
MAX_CLIENT_CONN: 400
secret:
- POSTGRES_PASSWORD
files:
- pgbouncer/userlist.txt:/etc/pgbouncer/userlist.txt
angie:
image: docker.angie.software/angie:latest
roles:
- web
options:
publish:
- 80:80
- 443:443
directories:
- /usr/share/angie/html:/usr/share/angie/html
- /var/lib/angie/acme:/var/lib/angie/acme
files:
- angie/billing.domain.ru.conf:/etc/angie/http.d/billing.domain.ru.conf
- angie/angie.conf:/etc/angie/angie.conf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment