# Using version 3 to provide play-with-docker badge # You can change to version 2 without breaking. #version: '2' version: '3' services: database: container_name: ${db_container_name} # Don't upgrade PostgreSQL by simply changing the version number # You need to migrate the Database to the new PostgreSQL version image: ${database_image}:${database_version} #mem_limit: 256mb # version 2 only #memswap_limit: 512mb # version 2 only #read_only: true # not supported in swarm mode please enable along with tmpfs #tmpfs: # - /run/postgresql:size=512K # - /tmp:size=256K #environment: # - POSTGRES_USER=hedgedoc # - POSTGRES_PASSWORD= # - POSTGRES_DB=hedgedoc volumes: - database:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U hedgedoc"] interval: 60s timeout: 10s retries: 3 start_period: 5s networks: backend: #restart: always # MySQL example # Most of the documentation that applies to PostgreSQL applies also to MySQL #database: # # You should be able to upgrade MySQL without problems # # but to make sure no even when a problem appears you # # should have a backup # image: mariadb:10 # #environment: # # - MYSQL_USER=hedgedoc # # - MYSQL_PASSWORD=password # # - MYSQL_DATABASE=hedgedoc # # - MYSQL_ALLOW_EMPTY_PASSWORD=true # volumes: # - database:/var/lib/mysql # # This config provides UTF-8 support to the database by default # # If this config is not used, HedgeDoc breaks as it tries to write # # UTF-8 to a latin database. # - ./resources/utf8.cnf:/etc/mysql/conf.d/utf8.cnf # networks: # backend: # restart: always app: container_name: ${container_name} # Uncomment the following section to build the image yourself: #build: # context: . # dockerfile: debian/Dockerfile # args: # - "VERSION=master" # - "HEDGEDOC_REPOSITORY=https://github.com/hedgedoc/hedgedoc.git" image: ${hedgedoc_image}:${hedgedoc_version} #mem_limit: 256mb # version 2 only #memswap_limit: 512mb # version 2 only #read_only: true # not supported in swarm mode, enable along with tmpfs #tmpfs: # - /tmp:size=10M # # Make sure you remove this when you use filesystem as upload type # - /hedgedoc/public/uploads:size=10M # environment: # # **DB_URL** is formatted like: ://:@:/ # # Other examples are: # # - mysql://hedgedoc:password@database:3306/hedgedoc # # - sqlite:///data/sqlite.db (NOT RECOMMENDED) # # - For details see the official sequelize docs: http://docs.sequelizejs.com/en/v3/ # - CMD_DB_URL=postgres://hedgedoc:password@database:5432/hedgedoc # # **DOMAIN** is the domain under which HedgeDoc will be available. Just the (sub)domain, no protocol or paths. # # You MUST change this if your instance should be available under another domain than "localhost", otherwise your # # instance may be broken. # # You can define only ONE domain. # - CMD_DOMAIN=localhost # # **PROTOCOL_USESSL** defines if generated links should be HTTPS URLs. # # This variable won't activate encryption on the listen port. # # Set this to true if your reverse proxy exposes your instance via HTTPS. # - CMD_PROTOCOL_USESSL=false # # **HSTS_ENABLE** defines if HSTS headers should be sent. Set this to true if you use HTTPS. # - CMD_HSTS_ENABLE=false # # **URL_ADDPORT** defines if generated links should contain the port. # # Set this to false if your reverse uses the default ports (443 for HTTPS or 80 for HTTP). # - CMD_URL_ADDPORT=true volumes: - data:/hedgedoc/public/uploads ports: # Ports that are published to the outside. # The latter port is the port inside the container. It should always stay on 3000 # If you only specify a port it'll published on all interfaces. If you want to use a # local reverse proxy, you may want to listen on 127.0.0.1. # Example: # - "127.0.0.1:3000:3000" - "127.0.0.1:8089:3000" networks: backend: #restart: always depends_on: - ${db_container_name} # Define networks to allow best isolation networks: # Internal network for communication with PostgreSQL/MySQL backend: # Define named volumes so data stays in place volumes: # Volume for PostgreSQL/MySQL database database: data: