Move all sensitive and configurable values out of compose.yaml
into a .env file (mode 0600). compose.yaml now uses ${VAR}
substitution with no embedded secrets. Added planka.env.j2
template and a dedicated Deploy .env task in the playbook.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
60 lines
1.6 KiB
Django/Jinja
60 lines
1.6 KiB
Django/Jinja
networks:
|
|
pangolin:
|
|
external: true
|
|
planka_net:
|
|
driver: bridge
|
|
|
|
services:
|
|
planka:
|
|
image: ghcr.io/plankanban/planka:${PLANKA_VERSION}
|
|
container_name: planka_app
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${PLANKA_PORT}:1337"
|
|
volumes:
|
|
- favicons:/app/public/favicons
|
|
- user-avatars:/app/public/user-avatars
|
|
- background-images:/app/public/background-images
|
|
- attachments:/app/private/attachments
|
|
environment:
|
|
BASE_URL: ${BASE_URL}
|
|
DATABASE_URL: postgresql://postgres@postgres/${POSTGRES_DB}
|
|
SECRET_KEY: ${SECRET_KEY}
|
|
INTERNAL_ACCESS_TOKEN: ${INTERNAL_ACCESS_TOKEN}
|
|
LOG_LEVEL: ${LOG_LEVEL}
|
|
TRUST_PROXY: ${TRUST_PROXY}
|
|
TOKEN_EXPIRES_IN: ${TOKEN_EXPIRES_IN}
|
|
DEFAULT_ADMIN_EMAIL: ${DEFAULT_ADMIN_EMAIL}
|
|
DEFAULT_ADMIN_PASSWORD: ${DEFAULT_ADMIN_PASSWORD}
|
|
DEFAULT_ADMIN_NAME: ${DEFAULT_ADMIN_NAME}
|
|
DEFAULT_ADMIN_USERNAME: ${DEFAULT_ADMIN_USERNAME}
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
networks:
|
|
- pangolin
|
|
- planka_net
|
|
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
container_name: planka-postgres
|
|
restart: unless-stopped
|
|
volumes:
|
|
- db-data:/var/lib/postgresql/data
|
|
environment:
|
|
POSTGRES_DB: ${POSTGRES_DB}
|
|
POSTGRES_HOST_AUTH_METHOD: trust
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres -d ${POSTGRES_DB}"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- planka_net
|
|
|
|
volumes:
|
|
favicons:
|
|
user-avatars:
|
|
background-images:
|
|
attachments:
|
|
db-data:
|