service: www-example-com image: exampledotcom/www <% require 'dotenv/load' puts "site=#{ENV['SITE_NAME']}" def get_site_info(site_name = nil) require 'yaml' site_name ||= ENV['SITE_NAME'] hosts = YAML.load_file('../inventories/hosts-web.yml') hosts['webservers']['vars']['sites'].find { |s| s['name'] == site_name } end %> # map, e.g., /srv/www.example.com/files so that it can accept files via sftp for quick sharing volumes: - "<%= site = get_site_info; "/srv/#{site['name']}/files:/usr/share/caddy/files" %>" servers: web: hosts: - www.example.com options: user: "<%= site = get_site_info; "#{site['user']}:#{site['group']}" %>" ssh: user: kamal builder: arch: amd64 dockerfile: "Dockerfile" args: SITE_UID: "<%= get_site_info['uid'] %>" SITE_GID: "<%= get_site_info['gid'] %>" SITE_USER: "<%= get_site_info['user'] %>" SITE_GROUP: "<%= get_site_info['group'] %>" registry: server: accountid.dkr.ecr.us-east-1.amazonaws.com username: AWS password: <%= %x(aws --profile exampledotcom-ecr-publish-accountid ecr get-login-password) %> proxy: ssl: true host: www.example.com app_port: 80