|
1 | | -version: '3.9' |
2 | | -services: |
3 | | - db: |
4 | | - image: mariadb:10.5 |
5 | | - container_name: seatable-mysql |
6 | | - environment: |
7 | | - - MYSQL_ROOT_PASSWORD=hellopassword |
8 | | - - MYSQL_LOG_CONSOLE=true |
9 | | - #volumes: |
10 | | - #- /opt/seatable/mysql-data:/var/lib/mysql # Volume of MySQL (directory for persistent storage) and mount point in container -- can be changed (not advised) |
11 | | - networks: |
12 | | - - seatable-net |
13 | 1 |
|
14 | | - memcached: |
15 | | - image: memcached:1.5.6 |
16 | | - container_name: seatable-memcached |
17 | | - entrypoint: memcached -m 256 |
18 | | - networks: |
19 | | - - seatable-net |
| 2 | +networks: |
| 3 | + frontend-net: |
| 4 | + name: frontend-net |
| 5 | + backend-seatable-net: |
| 6 | + name: backend-seatable-net |
20 | 7 |
|
21 | | - redis: |
22 | | - image: redis:5.0.7 |
23 | | - container_name: seatable-redis |
24 | | - networks: |
25 | | - - seatable-net |
26 | 8 |
|
27 | | - seatable: |
28 | | - #image: seatable/seatable-enterprise:latest |
29 | | - build: |
30 | | - context: . |
31 | | - args: |
32 | | - SEATABLE_VERSION: '3.1.13' |
33 | | - container_name: seatable |
34 | | - ports: |
35 | | - - "80:80" # HTTP port on the Docker host and the port in the container -- must be changed if port 80 is already in use on Docker host |
36 | | - # - "443:443" # HTTPS port on the Docker host and the port in the container -- must be changed if port 443 is already in use on Docker host |
| 9 | +services: |
| 10 | + seatable-server: |
| 11 | + image: ${SEATABLE_IMAGE:-seatable/seatable-enterprise:5.2.7} |
| 12 | + container_name: seatable-server |
37 | 13 | volumes: |
38 | | - - /opt/seatable/seatable-data:/shared # Volume of SeaTable (directory for persistent storage) and mount point in container -- can be changed (not advised) |
| 14 | + - type: bind |
| 15 | + source: "./seatable-license.txt" |
| 16 | + target: "/shared/seatable/seatable-license.txt" |
| 17 | + read_only: ${SEATABLE_LICENSE_FORCE_READ_ONLY:-false} |
| 18 | + ports: |
| 19 | + - "80:80" |
39 | 20 | environment: |
40 | | - - DB_HOST=seatable-mysql |
41 | | - #- DB_ROOT_PASSWD=hellopassword # Root password of MySQL -- must be changed to the value set above |
42 | | - - DB_ROOT_PASSWD_FILE=/run/secrets/shared_mysql_root_password |
43 | | - - REDIS_HOST=seatable-redis |
44 | | - - MEMCACHED_HOST=seatable-memcached |
45 | | - - SEATABLE_SERVER_URL_FORCE_HTTPS=True |
46 | | - - SEATABLE_SERVER_LETSENCRYPT=False # Decision on whether or not to use Let's Encrypt for HTTPS, default is False -- must be changed to True if a Let's Encrypt SSL certificate is to be used |
47 | | - - SEATABLE_SERVER_HOSTNAME=seatable.example.com # Host name -- must be changed |
48 | | - - TIME_ZONE=Etc/UTC # Optional, default is UTC. Example: Europe/Berlin. Choices can be found here: http://en.wikipedia.org/wiki/List_of_tz_zones_by_name |
| 21 | + - DB_HOST=mariadb |
| 22 | + - DB_ROOT_PASSWD=${SEATABLE_MYSQL_ROOT_PASSWORD:?Variable is not set or empty} |
| 23 | + - SEATABLE_SERVER_HOSTNAME=${SEATABLE_SERVER_HOSTNAME:?Variable is not set or empty} |
| 24 | + - SEATABLE_SERVER_PROTOCOL=${SEATABLE_SERVER_PROTOCOL:-https} |
| 25 | + - SEATABLE_ADMIN_EMAIL=${SEATABLE_ADMIN_EMAIL:?Variable is not set or empty} |
| 26 | + - SEATABLE_ADMIN_PASSWORD=${SEATABLE_ADMIN_PASSWORD:?Variable is not set or empty} |
| 27 | + - TIME_ZONE=${TIME_ZONE} |
| 28 | + - PYTHON_SCHEDULER_URL=${PYTHON_SCHEDULER_URL:-http://python-scheduler} |
| 29 | + - PYTHON_SCHEDULER_AUTH_TOKEN=${PYTHON_SCHEDULER_AUTH_TOKEN:-} |
| 30 | + - REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt |
| 31 | + - SEATABLE_EMAIL_USE_TLS=${SEATABLE_EMAIL_USE_TLS:-} |
| 32 | + - SEATABLE_EMAIL_HOST=${SEATABLE_EMAIL_HOST:-} |
| 33 | + - SEATABLE_EMAIL_HOST_USER=${SEATABLE_EMAIL_HOST_USER:-} |
| 34 | + - SEATABLE_EMAIL_HOST_PASSWORD=${SEATABLE_EMAIL_HOST_PASSWORD:-} |
| 35 | + - SEATABLE_EMAIL_PORT=${SEATABLE_EMAIL_PORT:-} |
| 36 | + - SEATABLE_DEFAULT_FROM_EMAIL=${SEATABLE_DEFAULT_FROM_EMAIL:-} |
| 37 | + - SEATABLE_SERVER_EMAIL=${SEATABLE_SERVER_EMAIL:-} |
| 38 | + - SEATABLE_SHOW_TEMPLATES_LINK=${SEATABLE_SHOW_TEMPLATES_LINK:-} |
| 39 | + - SEATABLE_TEMPLATE_BASE_API_TOKEN=${SEATABLE_TEMPLATE_BASE_API_TOKEN:-} |
| 40 | + - SEATABLE_TEMPLATE_TABLE_NAME=${SEATABLE_TEMPLATE_TABLE_NAME:-} |
| 41 | + - SEATABLE_ENABLE_CREATE_BASE_FROM_TEMPLATE=${SEATABLE_ENABLE_CREATE_BASE_FROM_TEMPLATE:-} |
| 42 | + - SEATABLE_HELP_LINK=${SEATABLE_HELP_LINK:-https://docs.seatable.io} |
| 43 | + - SEATABLE_LOG_LEVEL=${SEATABLE_LOG_LEVEL:-INFO} |
| 44 | + |
| 45 | + |
49 | 46 | depends_on: |
50 | | - - db |
51 | | - - memcached |
52 | | - - redis |
| 47 | + mariadb: |
| 48 | + condition: service_healthy |
| 49 | + redis: |
| 50 | + condition: service_healthy |
53 | 51 | networks: |
54 | | - - seatable-net |
| 52 | + - frontend-net |
| 53 | + - backend-seatable-net |
| 54 | + # healthcheck specifically for dtable-web |
| 55 | + healthcheck: |
| 56 | + test: ["CMD-SHELL", "curl --fail http://localhost:8000 || exit 1"] |
| 57 | + interval: 20s |
| 58 | + retries: 3 |
| 59 | + start_period: 30s |
| 60 | + timeout: 10s |
55 | 61 |
|
56 | | -networks: |
57 | | - seatable-net: |
| 62 | + mariadb: |
| 63 | + image: ${SEATABLE_DB_IMAGE:-mariadb:11.4.3-noble} |
| 64 | + restart: unless-stopped |
| 65 | + container_name: mariadb |
| 66 | + environment: |
| 67 | + - MYSQL_ROOT_PASSWORD=${SEATABLE_MYSQL_ROOT_PASSWORD:?Variable is not set or empty} |
| 68 | + - MYSQL_LOG_CONSOLE=true |
| 69 | + - MARIADB_AUTO_UPGRADE=1 |
| 70 | + - TZ=${TIME_ZONE} |
| 71 | + networks: |
| 72 | + - backend-seatable-net |
| 73 | + healthcheck: |
| 74 | + test: |
| 75 | + [ |
| 76 | + "CMD", |
| 77 | + "/usr/local/bin/healthcheck.sh", |
| 78 | + "--connect", |
| 79 | + "--mariadbupgrade", |
| 80 | + "--innodb_initialized", |
| 81 | + ] |
| 82 | + interval: 20s |
| 83 | + retries: 3 |
| 84 | + start_period: 30s |
| 85 | + timeout: 10s |
| 86 | + # On older database containers without healthcheck users present you might need to create them manually, |
| 87 | + # otherwise the container stays unhealthy. |
| 88 | + # more info at https://admin.seatable.io/upgrade/extra-upgrade-notice/ |
| 89 | + |
| 90 | + redis: |
| 91 | + image: ${SEATABLE_REDIS_IMAGE:-redis:7.2.7-bookworm} |
| 92 | + restart: unless-stopped |
| 93 | + container_name: redis |
| 94 | + networks: |
| 95 | + - backend-seatable-net |
| 96 | + healthcheck: |
| 97 | + test: ["CMD", "redis-cli", "ping"] |
| 98 | + interval: 20s |
| 99 | + retries: 3 |
| 100 | + timeout: 5s |
0 commit comments