gnutaler-docker/compose.yml

169 lines
6.5 KiB
YAML

services:
postgres:
image: postgres:16
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-taler}
volumes:
- pgdata:/var/lib/postgresql/data
- ./postgres/init:/docker-entrypoint-initdb.d:ro
exchange:
image: taler-stack:build
entrypoint: ["/usr/local/bin/with-dbinit.sh"]
command: ["taler-exchange-httpd", "-c", "/etc/taler/taler-exchange.conf"]
environment:
DB_NAME: ${TALER_EXCHANGE_DB:-talerexchange}
INIT_CMD: taler-exchange-dbinit -c /etc/taler/taler-exchange.conf
PGHOST: ${POSTGRES_HOST:-postgres}
PGUSER: ${POSTGRES_ADMIN_USER:-postgres}
PGPASSWORD: ${POSTGRES_PASSWORD:-taler}
EXCHANGE_BASE_URL: ${EXCHANGE_BASE_URL:-https://exchange.antifa.ltd/}
EXCHANGE_SHOPPING_URL: ${EXCHANGE_SHOPPING_URL:-https://exchange.antifa.ltd/}
OPEN_BANKING_GATEWAY_URL: ${OPEN_BANKING_GATEWAY_URL:-https://ob.antifa.ltd}
PAYTO_URI: ${PAYTO_URI:-payto://x-taler-bank/ob.antifa.ltd/demogeld?receiver-name=demogeld}
EXCHANGE_HOST: ${EXCHANGE_HOST:-exchange.antifa.ltd}
BANK_HOST: ${BANK_HOST:-ob.antifa.ltd}
depends_on: [postgres]
volumes:
- ./exchange/conf:/etc/taler
- ${EXCHANGE_SECRETS_PATH:-./exchange/secrets}:/etc/taler/secrets
- ./exchange/terms:/etc/taler-exchange/terms
- ./exchange/privacy:/etc/taler-exchange/privacy
ports:
- "8081:8081" # intern, später via Reverse Proxy auf 443
exchange-account-init:
image: taler-stack:build
depends_on: [exchange]
environment:
ENABLE_EXCHANGE_ACCOUNT: ${ENABLE_EXCHANGE_ACCOUNT:-0}
PAYTO_URI: ${PAYTO_URI:-payto://x-taler-bank/ob.antifa.ltd/demogeld?receiver-name=demogeld}
EXCHANGE_CONFIG: /etc/taler/taler-exchange.conf
EXCHANGE_KEYS_URL: ${EXCHANGE_KEYS_URL:-http://exchange:8081/keys}
EXCHANGE_WAIT_RETRIES: ${EXCHANGE_WAIT_RETRIES:-60}
EXCHANGE_WAIT_INTERVAL: ${EXCHANGE_WAIT_INTERVAL:-2}
EXCHANGE_CURL_OPTS: ${EXCHANGE_CURL_OPTS:-}
volumes:
- ./exchange/conf:/etc/taler
- ${EXCHANGE_SECRETS_PATH:-./exchange/secrets}:/etc/taler/secrets
- ./exchange/terms:/etc/taler-exchange/terms
- ./exchange/privacy:/etc/taler-exchange/privacy
command: ["/usr/local/bin/enable-exchange-account.sh"]
restart: "no"
merchant:
image: taler-stack:build
entrypoint: ["/usr/local/bin/with-dbinit.sh"]
command: ["taler-merchant-httpd", "-c", "/etc/taler-merchant/merchant.conf"]
environment:
DB_NAME: ${TALER_MERCHANT_DB:-talermerchant}
INIT_CMD: taler-merchant-dbinit -c /etc/taler-merchant/merchant.conf
PGHOST: ${POSTGRES_HOST:-postgres}
PGUSER: ${POSTGRES_ADMIN_USER:-postgres}
PGPASSWORD: ${POSTGRES_PASSWORD:-taler}
EXCHANGE_BASE_URL: ${EXCHANGE_BASE_URL:-https://exchange.antifa.ltd/}
EXCHANGE_HOST: ${EXCHANGE_HOST:-exchange.antifa.ltd}
depends_on: [postgres, exchange]
volumes:
- ./merchant/conf:/etc/taler-merchant
ports:
- "9966:9966"
bank:
image: taler-stack:build
entrypoint: ["/usr/local/bin/with-dbinit.sh"]
command: ["libeufin-bank", "serve", "-c", "/etc/libeufin/bank.conf"]
environment:
DB_NAME: ${LIBEUFIN_DB_NAME:-libeufinbank}
INIT_CMD: libeufin-bank dbinit -c /etc/libeufin/bank.conf
PGHOST: ${POSTGRES_HOST:-postgres}
PGUSER: ${POSTGRES_ADMIN_USER:-postgres}
PGPASSWORD: ${POSTGRES_PASSWORD:-taler}
BANK_BASE_URL: ${BANK_BASE_URL:-https://ob.antifa.ltd/}
BANK_HOST: ${BANK_HOST:-ob.antifa.ltd}
EXCHANGE_BASE_URL: ${EXCHANGE_BASE_URL:-https://exchange.antifa.ltd/}
EXCHANGE_HOST: ${EXCHANGE_HOST:-exchange.antifa.ltd}
LIBEUFIN_ADMIN_USER: ${LIBEUFIN_ADMIN_USER:-admin}
LIBEUFIN_ADMIN_PASSWORD: ${LIBEUFIN_ADMIN_PASSWORD:-}
LIBEUFIN_USER: ${LIBEUFIN_USER:-demogeld}
LIBEUFIN_USER_PASSWORD: ${LIBEUFIN_USER_PASSWORD:-}
depends_on: [postgres]
volumes:
- ./bank/conf:/etc/libeufin
ports:
- "8080:8080"
caddy:
image: caddy:2
depends_on: [exchange, merchant, bank]
ports:
- "80:80"
- "443:443"
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
environment:
CADDY_ACME_EMAIL: ${CADDY_ACME_EMAIL:-ops@example.com}
BANK_HOST: ${BANK_HOST:-ob.antifa.ltd}
EXCHANGE_HOST: ${EXCHANGE_HOST:-exchange.antifa.ltd}
MERCHANT_HOST: ${MERCHANT_HOST:-merchant.antifa.ltd}
WORDPRESS_HOST: ${WORDPRESS_HOST:-wordpress.domain.tld}
mariadb:
image: mariadb:11
environment:
MARIADB_ROOT_PASSWORD: ${WP_DB_ROOT_PASSWORD:-wordpressroot}
MARIADB_DATABASE: ${WP_DB_NAME:-wordpress}
MARIADB_USER: ${WP_DB_USER:-wordpress}
MARIADB_PASSWORD: ${WP_DB_PASSWORD:-wordpress}
volumes:
- mariadb_data:/var/lib/mysql
wordpress:
image: wordpress:6.5-php8.2-apache
depends_on: [mariadb]
environment:
WORDPRESS_DB_HOST: ${WP_DB_HOST:-mariadb}
WORDPRESS_DB_NAME: ${WP_DB_NAME:-wordpress}
WORDPRESS_DB_USER: ${WP_DB_USER:-wordpress}
WORDPRESS_DB_PASSWORD: ${WP_DB_PASSWORD:-wordpress}
WORDPRESS_TABLE_PREFIX: ${WP_TABLE_PREFIX:-wp_}
volumes:
- wordpress_data:/var/www/html
ports:
- "8085:80"
wp-init:
image: wordpress:cli-php8.2
depends_on: [wordpress]
environment:
WORDPRESS_DB_HOST: ${WP_DB_HOST:-mariadb}
WORDPRESS_DB_NAME: ${WP_DB_NAME:-wordpress}
WORDPRESS_DB_USER: ${WP_DB_USER:-wordpress}
WORDPRESS_DB_PASSWORD: ${WP_DB_PASSWORD:-wordpress}
WORDPRESS_TABLE_PREFIX: ${WP_TABLE_PREFIX:-wp_}
WP_URL: ${WP_URL:-https://wordpress.domain.tld}
WP_ADMIN_USER: ${WP_ADMIN_USER:-admin}
WP_ADMIN_PASSWORD: ${WP_ADMIN_PASSWORD:-change_me}
WP_ADMIN_EMAIL: ${WP_ADMIN_EMAIL:-ops@example.com}
volumes:
- wordpress_data:/var/www/html
entrypoint: ["/bin/sh","-c"]
command: >
set -e;
cd /var/www/html;
wp core is-installed --allow-root ||
wp core install --allow-root --url="${WP_URL}" --title="Taler Demo Shop"
--admin_user="${WP_ADMIN_USER}" --admin_password="${WP_ADMIN_PASSWORD}" --admin_email="${WP_ADMIN_EMAIL}";
wp plugin is-installed woocommerce --allow-root || wp plugin install woocommerce --activate --allow-root;
wp plugin is-installed gnu-taler-payment-for-woocommerce --allow-root || wp plugin install gnu-taler-payment-for-woocommerce --activate --allow-root;
echo "WordPress init complete.";
restart: "no"
volumes:
pgdata: {}
caddy_data: {}
caddy_config: {}
mariadb_data: {}
wordpress_data: {}