|
- # Name of your application. Used to uniquely configure containers.
- service: backend
-
- # Name of the container image.
- image: your-user/backend
-
- # Deploy to these servers.
- servers:
- web:
- - 192.168.0.1
- # job:
- # hosts:
- # - 192.168.0.1
- # cmd: bin/jobs
-
- # Enable SSL auto certification via Let's Encrypt and allow for multiple apps on a single web server.
- # Remove this section when using multiple web servers and ensure you terminate SSL at your load balancer.
- #
- # Note: If using Cloudflare, set encryption mode in SSL/TLS setting to "Full" to enable CF-to-app encryption.
- proxy:
- ssl: true
- host: app.example.com
-
- # Credentials for your image host.
- registry:
- # Specify the registry server, if you're not using Docker Hub
- # server: registry.digitalocean.com / ghcr.io / ...
- username: your-user
-
- # Always use an access token rather than real password when possible.
- password:
- - KAMAL_REGISTRY_PASSWORD
-
- # Inject ENV variables into containers (secrets come from .kamal/secrets).
- env:
- secret:
- - RAILS_MASTER_KEY
- clear:
- # Run the Solid Queue Supervisor inside the web server's Puma process to do jobs.
- # When you start using multiple servers, you should split out job processing to a dedicated machine.
- SOLID_QUEUE_IN_PUMA: true
-
- # Set number of processes dedicated to Solid Queue (default: 1)
- # JOB_CONCURRENCY: 3
-
- # Set number of cores available to the application on each server (default: 1).
- # WEB_CONCURRENCY: 2
-
- # Match this to any external database server to configure Active Record correctly
- # Use backend-db for a db accessory server on same machine via local kamal docker network.
- # DB_HOST: 192.168.0.2
-
- # Log everything from Rails
- # RAILS_LOG_LEVEL: debug
-
- # Aliases are triggered with "bin/kamal <alias>". You can overwrite arguments on invocation:
- # "bin/kamal logs -r job" will tail logs from the first server in the job section.
- aliases:
- console: app exec --interactive --reuse "bin/rails console"
- shell: app exec --interactive --reuse "bash"
- logs: app logs -f
- dbc: app exec --interactive --reuse "bin/rails dbconsole"
-
-
- # Use a persistent storage volume for sqlite database files and local Active Storage files.
- # Recommended to change this to a mounted volume path that is backed up off server.
- volumes:
- - "backend_storage:/rails/storage"
-
-
- # Bridge fingerprinted assets, like JS and CSS, between versions to avoid
- # hitting 404 on in-flight requests. Combines all files from new and old
- # version inside the asset_path.
- asset_path: /rails/public/assets
-
- # Configure the image builder.
- builder:
- arch: amd64
-
- # # Build image via remote server (useful for faster amd64 builds on arm64 computers)
- # remote: ssh://docker@docker-builder-server
- #
- # # Pass arguments and secrets to the Docker build process
- # args:
- # RUBY_VERSION: 3.2.2
- # secrets:
- # - GITHUB_TOKEN
- # - RAILS_MASTER_KEY
-
- # Use a different ssh user than root
- # ssh:
- # user: app
-
- # Use accessory services (secrets come from .kamal/secrets).
- # accessories:
- # db:
- # image: mysql:8.0
- # host: 192.168.0.2
- # # Change to 3306 to expose port to the world instead of just local network.
- # port: "127.0.0.1:3306:3306"
- # env:
- # clear:
- # MYSQL_ROOT_HOST: '%'
- # secret:
- # - MYSQL_ROOT_PASSWORD
- # files:
- # - config/mysql/production.cnf:/etc/mysql/my.cnf
- # - db/production.sql:/docker-entrypoint-initdb.d/setup.sql
- # directories:
- # - data:/var/lib/mysql
- # redis:
- # image: redis:7.0
- # host: 192.168.0.2
- # port: 6379
- # directories:
- # - data:/data
|