Port docker-compose resources and service details
This commit is contained in:
78
resources/docker-compose/_meta.yaml.j2
Normal file
78
resources/docker-compose/_meta.yaml.j2
Normal file
@@ -0,0 +1,78 @@
|
||||
---
|
||||
version: "{{ skylab_compose_version }}"
|
||||
|
||||
|
||||
networks:
|
||||
meta:
|
||||
name: meta
|
||||
driver: overlay
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: {{ app.networks.ext }}
|
||||
|
||||
|
||||
volumes:
|
||||
{% for key, value in app.volumes.items() %}
|
||||
meta-{{ key }}:
|
||||
name: datastore{{ value }}
|
||||
driver: glusterfs
|
||||
{% endfor %}
|
||||
|
||||
|
||||
services:
|
||||
proxy:
|
||||
image: nginx:{{ app.versions.proxy }}
|
||||
hostname: proxy
|
||||
networks:
|
||||
- meta
|
||||
extra_hosts:
|
||||
- "dockerloopback:{{ app.settings.loopback_address }}"
|
||||
ports:
|
||||
- published: {{ app.ports.80 }}
|
||||
target: 80
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.443 }}
|
||||
target: 443
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
volumes:
|
||||
- type: volume
|
||||
source: meta-nginx
|
||||
target: /etc/nginx
|
||||
read_only: true
|
||||
- type: volume
|
||||
source: meta-letsencrypt-config
|
||||
target: /etc/letsencrypt
|
||||
read_only: true
|
||||
deploy:
|
||||
replicas: 2
|
||||
placement:
|
||||
max_replicas_per_node: 1
|
||||
|
||||
certbot:
|
||||
image: certbot/certbot:{{ app.versions.certbot }}
|
||||
hostname: certbot
|
||||
command: renew --standalone
|
||||
networks:
|
||||
- meta
|
||||
ports:
|
||||
- published: 8088 # This is hardcoded to avoid conflicts
|
||||
target: 80
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
volumes:
|
||||
- type: volume
|
||||
source: meta-letsencrypt-config
|
||||
target: /etc/letsencrypt
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: meta-letsencrypt-data
|
||||
target: /var/lib/letsencrypt
|
||||
read_only: false
|
||||
deploy:
|
||||
replicas: 1
|
||||
restart_policy:
|
||||
condition: any
|
||||
delay: 24h
|
53
resources/docker-compose/adguard.yaml.j2
Normal file
53
resources/docker-compose/adguard.yaml.j2
Normal file
@@ -0,0 +1,53 @@
|
||||
---
|
||||
version: "{{ skylab_compose_version }}"
|
||||
|
||||
networks:
|
||||
adguard:
|
||||
name: adguard
|
||||
driver: overlay
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: "{{ app.networks.ext }}"
|
||||
|
||||
volumes:
|
||||
{% for key, value in app.volumes.items() %}
|
||||
adguard-{{ key }}:
|
||||
name: datastore{{ value }}
|
||||
driver: glusterfs
|
||||
{% endfor %}
|
||||
|
||||
services:
|
||||
server:
|
||||
image: adguard/adguardhome:{{ app.versions.server }}
|
||||
hostname: adguard
|
||||
networks:
|
||||
- adguard
|
||||
dns:
|
||||
{% for server in app.settings.upstream %}
|
||||
- {{ server }}
|
||||
{% endfor %}
|
||||
ports:
|
||||
- published: {{ app.ports.53 }}
|
||||
target: 53
|
||||
protocol: udp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.53 }}
|
||||
target: 53
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.8064 }}
|
||||
target: 8064
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
volumes:
|
||||
- type: volume
|
||||
source: adguard-config
|
||||
target: /opt/adguardhome/conf
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: adguard-data
|
||||
target: /opt/adguardhome/work
|
||||
read_only: false
|
||||
deploy:
|
||||
replicas: 1
|
214
resources/docker-compose/bitwarden.yaml.j2
Normal file
214
resources/docker-compose/bitwarden.yaml.j2
Normal file
@@ -0,0 +1,214 @@
|
||||
---
|
||||
version: "{{ skylab_compose_version }}"
|
||||
|
||||
|
||||
x-global-env: &globalenv
|
||||
LOCAL_UID: "{{ _app_account.uid }}"
|
||||
LOCAL_GID: "{{ _app_account.uid }}"
|
||||
ASPNETCORE_ENVIRONMENT: Production
|
||||
globalSettings__selfHosted: "true"
|
||||
globalSettings__baseServiceUri__vault: https://{{ app.domain }}
|
||||
globalSettings__baseServiceUri__api: https://{{ app.domain }}/api
|
||||
globalSettings__baseServiceUri__identity: https://{{ app.domain }}/identity
|
||||
globalSettings__baseServiceUri__admin: https://{{ app.domain }}/admin
|
||||
globalSettings__baseServiceUri__notifications: https://{{ app.domain }}/notifications
|
||||
globalSettings__baseServiceUri__internalNotifications: http://bitwarden_notifications:5000
|
||||
globalSettings__baseServiceUri__internalAdmin: http://bitwarden_admin:5000
|
||||
globalSettings__baseServiceUri__internalIdentity: http://bitwarden_identity:5000
|
||||
globalSettings__baseServiceUri__internalApi: http://bitwarden_api:5000
|
||||
globalSettings__baseServiceUri__internalVault: http://bitwarden_web:5000
|
||||
globalSettings__pushRelayBaseUri: https://push.bitwarden.com
|
||||
globalSettings__installation__identityUri: https://identity.bitwarden.com
|
||||
globalSettings__sqlServer__connectionString: "Data Source=tcp:mssql,1433;Initial Catalog=vault;Persist Security Info=False;User ID=sa;Password=e934c0bb-3b5a-4e6b-b525-cd6d83004e1a;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=True"
|
||||
globalSettings__identityServer__certificatePassword: {{ app.settings.certificatePassword }}
|
||||
globalSettings__attachment__baseDirectory: /etc/bitwarden/core/attachments
|
||||
globalSettings__attachment__baseUrl: https://{{ app.domain }}/attachments
|
||||
globalSettings__dataProtection__directory: /etc/bitwarden/core/aspnet-dataprotection
|
||||
globalSettings__logDirectory: /etc/bitwarden/logs
|
||||
globalSettings__licenseDirectory: /etc/bitwarden/core/licenses
|
||||
globalSettings__internalIdentityKey: {{ app.settings.internalIdentityKey }}
|
||||
globalSettings__duo__aKey: {{ app.settings.duo__aKey }}
|
||||
globalSettings__installation__id: {{ app.settings.installation__id }}
|
||||
globalSettings__installation__key: {{ app.settings.installation__key }}
|
||||
globalSettings__yubico__clientId: REPLACE
|
||||
globalSettings__yubico__key: REPLACE
|
||||
globalSettings__mail__replyToEmail: noreply@enp.one
|
||||
globalSettings__mail__smtp__host: REPLACE
|
||||
globalSettings__mail__smtp__port: "587"
|
||||
globalSettings__mail__smtp__ssl: "false"
|
||||
globalSettings__mail__smtp__username: REPLACE
|
||||
globalSettings__mail__smtp__password: REPLACE
|
||||
globalSettings__disableUserRegistration: "false"
|
||||
globalSettings__hibpApiKey: REPLACE
|
||||
adminSettings__admins: ""
|
||||
|
||||
|
||||
volumes:
|
||||
{% for key, value in app.volumes.items() %}
|
||||
bitwarden-{{ key }}:
|
||||
name: datastore{{ value }}
|
||||
driver: glusterfs
|
||||
{% endfor %}
|
||||
|
||||
networks:
|
||||
bitwarden_internal:
|
||||
internal: true
|
||||
name: bitwarden_internal
|
||||
driver: overlay
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: {{ app.networks.internal }}
|
||||
bitwarden_external:
|
||||
internal: false
|
||||
name: bitwarden_external
|
||||
driver: overlay
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: {{ app.networks.external }}
|
||||
|
||||
|
||||
services:
|
||||
mssql:
|
||||
image: bitwarden/mssql:{{ app.versions.mssql }}
|
||||
stop_grace_period: 60s
|
||||
networks:
|
||||
- bitwarden_internal
|
||||
volumes:
|
||||
- bitwarden-db-data:/var/opt/mssql/data
|
||||
- bitwarden-db-backup:/etc/bitwarden/mssql/backups
|
||||
- bitwarden-logs-db:/var/opt/mssql/log
|
||||
environment:
|
||||
LOCAL_UID: "{{ _app_account.uid }}"
|
||||
LOCAL_GID: "{{ _app_account.uid }}"
|
||||
ACCEPT_EULA: "Y"
|
||||
MSSQL_PID: Express
|
||||
SA_PASSWORD: {{ app.settings.SA_PASSWORD }}
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
web:
|
||||
image: bitwarden/web:{{ app.versions.web }}
|
||||
networks:
|
||||
- bitwarden_internal
|
||||
volumes:
|
||||
- bitwarden-web:/etc/bitwarden/web
|
||||
environment: *globalenv
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
attachments:
|
||||
image: bitwarden/attachments:{{ app.versions.attachments }}
|
||||
networks:
|
||||
- bitwarden_internal
|
||||
volumes:
|
||||
- bitwarden-core:/etc/bitwarden/core
|
||||
environment: *globalenv
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
api:
|
||||
image: bitwarden/api:{{ app.versions.api }}
|
||||
volumes:
|
||||
- bitwarden-core:/etc/bitwarden/core
|
||||
- bitwarden-ca-certs:/etc/bitwarden/ca-certificates
|
||||
- bitwarden-logs-api:/etc/bitwarden/logs
|
||||
environment: *globalenv
|
||||
networks:
|
||||
- bitwarden_external
|
||||
- bitwarden_internal
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
identity:
|
||||
image: bitwarden/identity:{{ app.versions.identity }}
|
||||
volumes:
|
||||
- bitwarden-identity:/etc/bitwarden/identity
|
||||
- bitwarden-core:/etc/bitwarden/core
|
||||
- bitwarden-ca-certs:/etc/bitwarden/ca-certificates
|
||||
- bitwarden-logs-identity:/etc/bitwarden/logs
|
||||
environment: *globalenv
|
||||
networks:
|
||||
- bitwarden_external
|
||||
- bitwarden_internal
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
admin:
|
||||
image: bitwarden/admin:{{ app.versions.admin }}
|
||||
depends_on:
|
||||
- mssql
|
||||
volumes:
|
||||
- bitwarden-core:/etc/bitwarden/core
|
||||
- bitwarden-ca-certs:/etc/bitwarden/ca-certificates
|
||||
- bitwarden-logs-admin:/etc/bitwarden/logs
|
||||
environment: *globalenv
|
||||
networks:
|
||||
- bitwarden_external
|
||||
- bitwarden_internal
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
icons:
|
||||
image: bitwarden/icons:{{ app.versions.icons }}
|
||||
volumes:
|
||||
- bitwarden-ca-certs:/etc/bitwarden/ca-certificates
|
||||
- bitwarden-logs-icons:/etc/bitwarden/logs
|
||||
environment: *globalenv
|
||||
networks:
|
||||
- bitwarden_external
|
||||
- bitwarden_internal
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
notifications:
|
||||
image: bitwarden/notifications:1.40.0
|
||||
volumes:
|
||||
- bitwarden-ca-certs:/etc/bitwarden/ca-certificates
|
||||
- bitwarden-logs-notifications:/etc/bitwarden/logs
|
||||
environment: *globalenv
|
||||
networks:
|
||||
- bitwarden_external
|
||||
- bitwarden_internal
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
events:
|
||||
image: bitwarden/events:{{ app.versions.events }}
|
||||
volumes:
|
||||
- bitwarden-ca-certs:/etc/bitwarden/ca-certificates
|
||||
- bitwarden-logs-events:/etc/bitwarden/logs
|
||||
environment: *globalenv
|
||||
networks:
|
||||
- bitwarden_external
|
||||
- bitwarden_internal
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
nginx:
|
||||
image: bitwarden/nginx:{{ app.versions.nginx }}
|
||||
depends_on:
|
||||
- web
|
||||
- admin
|
||||
- api
|
||||
- identity
|
||||
ports:
|
||||
- published: {{ app.ports.8080 }}
|
||||
target: 8080
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.8443 }}
|
||||
target: 8443
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
volumes:
|
||||
- bitwarden-nginx-data:/etc/bitwarden/nginx
|
||||
- bitwarden-ssl:/etc/ssl
|
||||
- bitwarden-logs-nginx:/var/log/nginx
|
||||
environment: *globalenv
|
||||
networks:
|
||||
- bitwarden_external
|
||||
- bitwarden_internal
|
||||
deploy:
|
||||
replicas: 1
|
52
resources/docker-compose/gitea.yaml.j2
Normal file
52
resources/docker-compose/gitea.yaml.j2
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
version: "{{ skylab_compose_version }}"
|
||||
|
||||
|
||||
networks:
|
||||
gitea:
|
||||
name: gitea
|
||||
driver: overlay
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: {{ app.networks.ext }}
|
||||
|
||||
|
||||
volumes:
|
||||
{% for key, value in app.volumes.items() %}
|
||||
gitea-{{ key }}:
|
||||
name: datastore{{ value }}
|
||||
driver: glusterfs
|
||||
{% endfor %}
|
||||
|
||||
|
||||
services:
|
||||
server:
|
||||
image: gitea/gitea:{{ app.versions.server }}
|
||||
hostname: gitea
|
||||
networks:
|
||||
- gitea
|
||||
ports:
|
||||
- published: {{ app.ports.3000 }}
|
||||
target: 3000
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.22 }}
|
||||
target: 22
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
volumes:
|
||||
- type: volume
|
||||
source: gitea-data
|
||||
target: /data
|
||||
read_only: false
|
||||
environment:
|
||||
USER_UID: "{{ _app_account.uid }}"
|
||||
USER_GID: "{{ _app_account.uid }}"
|
||||
APP_NAME: ENP Version Control System
|
||||
RUN_MODE: prod
|
||||
ROOT_URL: https://{{ app.domain }}/
|
||||
DB_TYPE: sqlite3
|
||||
DISABLE_REGISTRATION: "true"
|
||||
deploy:
|
||||
replicas: 1
|
55
resources/docker-compose/minecraft.yaml.j2
Normal file
55
resources/docker-compose/minecraft.yaml.j2
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
version: "{{ skylab_compose_version }}"
|
||||
|
||||
|
||||
networks:
|
||||
minecraft:
|
||||
name: minecraft
|
||||
driver: overlay
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: {{ app.networks.ext }}
|
||||
|
||||
|
||||
volumes:
|
||||
{% for key, value in app.volumes.items() %}
|
||||
minecraft-{{ key }}:
|
||||
name: datastore{{ value }}
|
||||
driver: glusterfs
|
||||
{% endfor %}
|
||||
|
||||
|
||||
services:
|
||||
server:
|
||||
image: itzg/minecraft-server:latest
|
||||
hostname: minecraft
|
||||
networks:
|
||||
- minecraft
|
||||
ports:
|
||||
- published: {{ app.ports.25565 }}
|
||||
target: 25565
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
volumes:
|
||||
- type: volume
|
||||
source: minecraft-data
|
||||
target: /data
|
||||
read_only: false
|
||||
environment:
|
||||
EULA: "TRUE"
|
||||
TZ: Americas/New_York
|
||||
VERSION: {{ app.versions.server }}
|
||||
MAX_MEMORY: "8G"
|
||||
MOTD: "A home for buttery companions"
|
||||
MODE: survival
|
||||
OPS: {{ app.settings.admins | default([]) | join(',') }}
|
||||
WHITELIST: "{{ app.settings.users | default([]) | join(',') }}"
|
||||
MAX_BUILD_HEIGHT: "512"
|
||||
SNOOPER_ENABLED: "false"
|
||||
ICON: https://cdn.enp.one/img/logos/e-w-sm.png
|
||||
ENABLE_RCON: "false"
|
||||
UID: "{{ _app_account.uid }}"
|
||||
GID: "{{ _app_account.uid }}"
|
||||
deploy:
|
||||
replicas: 1
|
95
resources/docker-compose/plex.yaml.j2
Normal file
95
resources/docker-compose/plex.yaml.j2
Normal file
@@ -0,0 +1,95 @@
|
||||
---
|
||||
version: "{{ skylab_compose_version }}"
|
||||
|
||||
|
||||
networks:
|
||||
plex:
|
||||
name: plex
|
||||
driver: overlay
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: {{ app.networks.ext }}
|
||||
|
||||
|
||||
volumes:
|
||||
{% for key, value in app.volumes.items() %}
|
||||
plex-{{ key }}:
|
||||
name: datastore{{ value }}
|
||||
driver: glusterfs
|
||||
{% endfor %}
|
||||
plex-data:
|
||||
name: plex-data
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: "addr={{ app.settings.mediastore }},ro"
|
||||
device: ":/nfs/plex"
|
||||
|
||||
|
||||
services:
|
||||
server:
|
||||
image: plexinc/pms-docker:{{ app.versions.server }}
|
||||
hostname: plex-media-server
|
||||
networks:
|
||||
- plex
|
||||
ports:
|
||||
- published: {{ app.ports.32400 }}
|
||||
target: 32400
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.3005 }}
|
||||
target: 3005
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.8324 }}
|
||||
target: 8324
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.32469 }}
|
||||
target: 32469
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.1900 }}
|
||||
target: 1900
|
||||
protocol: udp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.32410 }}
|
||||
target: 32410
|
||||
protocol: udp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.32413 }}
|
||||
target: 32413
|
||||
protocol: udp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.32414 }}
|
||||
target: 32414
|
||||
protocol: udp
|
||||
mode: ingress
|
||||
volumes:
|
||||
- type: volume
|
||||
source: plex-config
|
||||
target: /config
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: plex-data
|
||||
target: /data
|
||||
read_only: true
|
||||
- type: volume
|
||||
source: plex-personal
|
||||
target: /personal
|
||||
read_only: false
|
||||
environment:
|
||||
TZ: "Americas/New_York"
|
||||
ALLOWED_NETWORKS: {{ app.settings.internal_subnets | join(',') }}
|
||||
PLEX_UID: "{{ _app_account.uid }}"
|
||||
PLEX_GID: "{{ _app_account.uid }}"
|
||||
deploy:
|
||||
replicas: 1
|
||||
placement:
|
||||
{% if app.settings.exclude_hosts is defined %}
|
||||
constraints:
|
||||
{% for host in app.settings.exclude_hosts %}
|
||||
- node.hostname!={{ host }}
|
||||
{% endfor %}
|
||||
{% endif %}
|
70
resources/docker-compose/unifi.yaml.j2
Normal file
70
resources/docker-compose/unifi.yaml.j2
Normal file
@@ -0,0 +1,70 @@
|
||||
---
|
||||
version: "{{ skylab_compose_version }}"
|
||||
|
||||
|
||||
networks:
|
||||
unifi:
|
||||
name: unifi
|
||||
driver: overlay
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: {{ app.networks.ext }}
|
||||
|
||||
|
||||
volumes:
|
||||
{% for key, value in app.volumes.items() %}
|
||||
unifi-{{ key }}:
|
||||
name: datastore{{ value }}
|
||||
driver: glusterfs
|
||||
{% endfor %}
|
||||
|
||||
|
||||
services:
|
||||
wlc:
|
||||
image: jacobalberty/unifi:{{ app.versions.wlc }}
|
||||
hostname: en1-unifi-wlc
|
||||
init: true
|
||||
networks:
|
||||
- unifi
|
||||
ports:
|
||||
- published: {{ app.ports.8080 }}
|
||||
target: 8080
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.8443 }}
|
||||
target: 8443
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.8843 }}
|
||||
target: 8843
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.8880 }}
|
||||
target: 8880
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.3478 }}
|
||||
target: 3478
|
||||
protocol: udp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.6789 }}
|
||||
target: 6789
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
- published: {{ app.ports.10001 }}
|
||||
target: 10001
|
||||
protocol: udp
|
||||
mode: ingress
|
||||
volumes:
|
||||
- type: volume
|
||||
source: unifi-data
|
||||
target: /unifi
|
||||
read_only: false
|
||||
environment:
|
||||
RUNAS_UID0: "false"
|
||||
UNIFI_UID: "{{ _app_account.uid }}"
|
||||
UNIFI_GID: "{{ _app_account.uid }}"
|
||||
TZ: "Americas/New_York"
|
||||
deploy:
|
||||
replicas: 1
|
108
resources/docker-compose/vikunja.yaml.j2
Normal file
108
resources/docker-compose/vikunja.yaml.j2
Normal file
@@ -0,0 +1,108 @@
|
||||
---
|
||||
version: "{{ skylab_compose_version }}"
|
||||
|
||||
|
||||
networks:
|
||||
vikunja:
|
||||
name: vikunja
|
||||
driver: overlay
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: {{ app.networks.ext }}
|
||||
|
||||
|
||||
volumes:
|
||||
{% for key, value in app.volumes.items() %}
|
||||
vikunja-{{ key }}:
|
||||
name: datastore{{ value }}
|
||||
driver: glusterfs
|
||||
{% endfor %}
|
||||
|
||||
|
||||
services:
|
||||
database:
|
||||
image: mariadb:{{ app.versions.database }}
|
||||
hostname: database
|
||||
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
|
||||
networks:
|
||||
- vikunja
|
||||
volumes:
|
||||
- type: volume
|
||||
source: vikunja-database
|
||||
target: /var/lib/mysql
|
||||
read_only: false
|
||||
environment:
|
||||
MYSQL_RANDOM_ROOT_PASSWORD: "true"
|
||||
MYSQL_USER: vikunja
|
||||
MYSQL_PASSWORD: {{ app.settings.database_password }}
|
||||
MYSQL_DATABASE: vikunja
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
cache:
|
||||
image: redis:{{ app.versions.cache }}
|
||||
hostname: cache
|
||||
networks:
|
||||
- vikunja
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
proxy:
|
||||
image: nginx:{{ app.versions.proxy }}
|
||||
hostname: proxy
|
||||
networks:
|
||||
- vikunja
|
||||
ports:
|
||||
- published: {{ app.ports.80 }}
|
||||
target: 80
|
||||
protocol: tcp
|
||||
mode: ingress
|
||||
volumes:
|
||||
- type: volume
|
||||
source: vikunja-nginx
|
||||
target: /etc/nginx/conf.d
|
||||
read_only: true
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
api:
|
||||
image: vikunja/api:{{ app.versions.api }}
|
||||
hostname: api
|
||||
networks:
|
||||
- vikunja
|
||||
depends_on:
|
||||
- database
|
||||
- cache
|
||||
volumes:
|
||||
- type: volume
|
||||
source: vikunja-files
|
||||
target: /app/vikunja/files
|
||||
read_only: false
|
||||
environment:
|
||||
VIKUNJA_DATABASE_HOST: database
|
||||
VIKUNJA_DATABASE_PASSWORD: {{ app.settings.database_password }}
|
||||
VIKUNJA_DATABASE_TYPE: mysql
|
||||
VIKUNJA_DATABASE_USER: vikunja
|
||||
VIKUNJA_DATABASE_DATABASE: vikunja
|
||||
VIKUNJA_REDIS_ENABLED: "1"
|
||||
VIKUNJA_REDIS_HOST: cache:6379
|
||||
VIKUNJA_CACHE_ENABLED: "1"
|
||||
VIKUNJA_CACHE_TYPE: redis
|
||||
VIKUNJA_FILES_MAXSIZE: 50MB
|
||||
deploy:
|
||||
replicas: 1
|
||||
|
||||
web:
|
||||
image: vikunja/frontend:{{ app.versions.web }}
|
||||
hostname: web
|
||||
networks:
|
||||
- vikunja
|
||||
depends_on:
|
||||
- database
|
||||
- cache
|
||||
- proxy
|
||||
environment:
|
||||
VIKUNJA_API_URL: https://{{ app.domain }}/api/v1
|
||||
deploy:
|
||||
replicas: 1
|
Reference in New Issue
Block a user