mirror of
https://gitlab.com/bramw/baserow.git
synced 2025-02-06 22:00:09 +00:00
182 lines
4.4 KiB
YAML
182 lines
4.4 KiB
YAML
version: "3"
|
|
|
|
services:
|
|
db:
|
|
container_name: db
|
|
image: postgres:11.3
|
|
environment:
|
|
- POSTGRES_USER=${DATABASE_USER:-baserow}
|
|
- POSTGRES_PASSWORD=${DATABASE_PASSWORD:-baserow}
|
|
- POSTGRES_DB=${DATABASE_NAME:-baserow}
|
|
networks:
|
|
local:
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
|
|
redis:
|
|
container_name: redis
|
|
image: redis:6.0
|
|
networks:
|
|
local:
|
|
|
|
mjml:
|
|
container_name: mjml
|
|
image: liminspace/mjml-tcpserver:0.10
|
|
# mjml is based off the node image which creates a non root node user we can run as
|
|
user: "1000:1000"
|
|
networks:
|
|
local:
|
|
|
|
backend:
|
|
container_name: backend
|
|
build:
|
|
dockerfile: ./backend/Dockerfile
|
|
context: .
|
|
image: baserow_backend:latest
|
|
environment:
|
|
- PUBLIC_BACKEND_URL=${PUBLIC_BACKEND_URL:-http://localhost:8000}
|
|
- PUBLIC_WEB_FRONTEND_URL=${PUBLIC_BACKEND_URL:-http://localhost:3000}
|
|
- MIGRATE_ON_STARTUP=${MIGRATE_ON_STARTUP:-true}
|
|
- SYNC_TEMPLATES_ON_STARTUP=${SYNC_TEMPLATES_ON_STARTUP:-true}
|
|
- DATABASE_USER=${DATABASE_USER:-baserow}
|
|
- DATABASE_PASSWORD=${DATABASE_PASSWORD:-baserow}
|
|
- DATABASE_NAME=${DATABASE_NAME:-baserow}
|
|
- ADDITIONAL_APPS
|
|
- MEDIA_URL=http://localhost:${MEDIA_PORT:-4000}/media/
|
|
- EMAIL_SMTP
|
|
- EMAIL_SMTP_HOST
|
|
- EMAIL_SMTP_PORT
|
|
- EMAIL_SMTP_USE_TLS
|
|
- EMAIL_SMTP_USER
|
|
- EMAIL_SMTP_PASSWORD
|
|
- FROM_EMAIL
|
|
ports:
|
|
- "${HOST_PUBLISH_IP:-127.0.0.1}:${BACKEND_PORT:-8000}:8000"
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
- mjml
|
|
- media-volume-fixer
|
|
volumes:
|
|
- media:/baserow/media
|
|
networks:
|
|
local:
|
|
|
|
celery:
|
|
container_name: celery
|
|
image: baserow_backend:latest
|
|
environment:
|
|
- ADDITIONAL_APPS
|
|
- EMAIL_SMTP
|
|
- EMAIL_SMTP_HOST
|
|
- EMAIL_SMTP_PORT
|
|
- EMAIL_SMTP_USE_TLS
|
|
- EMAIL_SMTP_USER
|
|
- EMAIL_SMTP_PASSWORD
|
|
- FROM_EMAIL
|
|
build:
|
|
dockerfile: ./backend/Dockerfile
|
|
context: .
|
|
command: celery worker -l INFO -Q celery
|
|
depends_on:
|
|
- backend
|
|
volumes:
|
|
- media:/baserow/media
|
|
networks:
|
|
local:
|
|
|
|
celery-export-worker:
|
|
container_name: celery-export-worker
|
|
image: baserow_backend:latest
|
|
build:
|
|
dockerfile: ./backend/Dockerfile
|
|
context: .
|
|
command: celery worker -l INFO -Q export
|
|
depends_on:
|
|
- backend
|
|
environment:
|
|
- ADDITIONAL_APPS
|
|
- EMAIL_SMTP
|
|
- EMAIL_SMTP_HOST
|
|
- EMAIL_SMTP_PORT
|
|
- EMAIL_SMPT_USE_TLS
|
|
- EMAIL_SMTP_USER
|
|
- EMAIL_SMTP_PASSWORD
|
|
- FROM_EMAIL
|
|
volumes:
|
|
- media:/baserow/media
|
|
networks:
|
|
local:
|
|
|
|
celery-beat-worker:
|
|
container_name: celery-beat-worker
|
|
image: baserow_backend:latest
|
|
build:
|
|
dockerfile: ./backend/Dockerfile
|
|
context: .
|
|
command: celery beat -l INFO -S redbeat.RedBeatScheduler
|
|
depends_on:
|
|
- backend
|
|
environment:
|
|
- ADDITIONAL_APPS
|
|
- EMAIL_SMTP
|
|
- EMAIL_SMTP_HOST
|
|
- EMAIL_SMTP_PORT
|
|
- EMAIL_SMTP_USE_TLS
|
|
- EMAIL_SMTP_USER
|
|
- EMAIL_SMTP_PASSWORD
|
|
- FROM_EMAIL
|
|
volumes:
|
|
- media:/baserow/media
|
|
networks:
|
|
local:
|
|
|
|
web-frontend:
|
|
container_name: web-frontend
|
|
build:
|
|
context: .
|
|
dockerfile: ./web-frontend/Dockerfile
|
|
image: baserow_web-frontend:latest
|
|
environment:
|
|
- PUBLIC_BACKEND_URL=${PUBLIC_BACKEND_URL:-http://localhost:8000}
|
|
- PUBLIC_WEB_FRONTEND_URL=${PUBLIC_BACKEND_URL:-http://localhost:3000}
|
|
- ADDITIONAL_MODULES
|
|
ports:
|
|
- "${HOST_PUBLISH_IP:-127.0.0.1}:${WEB_FRONTEND_PORT:-3000}:3000"
|
|
depends_on:
|
|
- backend
|
|
networks:
|
|
local:
|
|
|
|
# A nginx container purely to serve up django's MEDIA files.
|
|
media:
|
|
container_name: media
|
|
build: media
|
|
ports:
|
|
- "${HOST_PUBLISH_IP:-127.0.0.1}:${MEDIA_PORT:-4000}:80"
|
|
depends_on:
|
|
- media-volume-fixer
|
|
volumes:
|
|
- media:/baserow/media
|
|
networks:
|
|
local:
|
|
|
|
# When switching between dev and local the media files in the media volume will be
|
|
# owned by different users. Ensure that we chown them to the user appropriate for the
|
|
# environment here.
|
|
media-volume-fixer:
|
|
container_name: media-volume-fixer
|
|
image: bash:4.4
|
|
command: chown 9999:9999 -R /baserow/media
|
|
volumes:
|
|
- media:/baserow/media
|
|
networks:
|
|
local:
|
|
|
|
volumes:
|
|
pgdata:
|
|
media:
|
|
|
|
networks:
|
|
local:
|
|
driver: bridge
|