Change docker-compose to use env vars

This commit is contained in:
eikek 2021-10-25 14:06:29 +02:00
parent b3ca7954bb
commit a1bf3957ba
7 changed files with 73 additions and 124 deletions

View File

@ -58,8 +58,8 @@ away:
``` shell ``` shell
git clone https://github.com/eikek/docspell git clone https://github.com/eikek/docspell
cd docspell/docker cd docspell/docker/docker-compose
DOCSPELL_HEADER_VALUE="my-secret-123" docker-compose up docker-compose up -d
``` ```
Then go to `http://localhost:7880`, sign up and login. Use the same Then go to `http://localhost:7880`, sign up and login. Use the same

View File

@ -1,2 +0,0 @@
TZ=Europe/Berlin
DOCSPELL_HEADER_VALUE=none

View File

@ -1,17 +1,35 @@
version: '3.8' version: '3.8'
services: services:
# The restserver and joex containers defined here are configured
# using env variables. Both must connect to the same database and
# solr instance. More information on configuring can be found here:
# https://docspell.org/docs/configure
#
# Please replace the values of the following with a custom secret
# string:
#
# - DOCSPELL_SERVER_ADMIN__ENDPOINT_SECRET
# - DOCSPELL_SERVER_AUTH_SERVER__SECRET
# - DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE
restserver: restserver:
image: docspell/restserver:latest image: docspell/restserver:latest
container_name: docspell-restserver container_name: docspell-restserver
command:
- /opt/docspell.conf
restart: unless-stopped restart: unless-stopped
ports: ports:
- "7880:7880" - "7880:7880"
volumes: environment:
- ./docspell.conf:/opt/docspell.conf - DOCSPELL_SERVER_ADMIN__ENDPOINT_SECRET=admin123
env_file: ./.env - DOCSPELL_SERVER_AUTH_SERVER__SECRET=
- DOCSPELL_SERVER_BACKEND_JDBC_PASSWORD=dbpass
- DOCSPELL_SERVER_BACKEND_JDBC_URL=jdbc:postgresql://db:5432/dbname
- DOCSPELL_SERVER_BACKEND_JDBC_USER=dbuser
- DOCSPELL_SERVER_BIND_ADDRESS=0.0.0.0
- DOCSPELL_SERVER_FULL__TEXT__SEARCH_ENABLED=true
- DOCSPELL_SERVER_FULL__TEXT__SEARCH_SOLR_URL=http://docspell-solr:8983/solr/docspell
- DOCSPELL_SERVER_INTEGRATION__ENDPOINT_ENABLED=true
- DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_ENABLED=true
- DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE=integration-password123
depends_on: depends_on:
- solr - solr
@ -20,16 +38,29 @@ services:
container_name: docspell-joex container_name: docspell-joex
command: command:
- -J-Xmx3G - -J-Xmx3G
- /opt/docspell.conf
restart: unless-stopped restart: unless-stopped
env_file: ./.env environment:
- TZ=Europe/Berlin
- DOCSPELL_JOEX_BASE__URL=http://docspell-joex:7878
- DOCSPELL_JOEX_BIND_ADDRESS=0.0.0.0
- DOCSPELL_JOEX_FULL__TEXT__SEARCH_ENABLED=true
- DOCSPELL_JOEX_FULL__TEXT__SEARCH_SOLR_URL=http://docspell-solr:8983/solr/docspell
- DOCSPELL_JOEX_JDBC_PASSWORD=dbpass
- DOCSPELL_JOEX_JDBC_URL=jdbc:postgresql://db:5432/dbname
- DOCSPELL_JOEX_JDBC_USER=dbuser
ports: ports:
- "7878:7878" - "7878:7878"
volumes:
- ./docspell.conf:/opt/docspell.conf
depends_on: depends_on:
- solr - solr
# The consumedir container watches a directory for files to upload
# to docspell restserver. This uses the `dsc` tool. For information
# on the available options, see `dsc --help`.
# https://github.com/docspell/dsc
#
# The value after `Docspell-Integration` must match the secret
# specified at the restserver via
# DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE.
consumedir: consumedir:
image: docspell/dsc:latest image: docspell/dsc:latest
container_name: docspell-consumedir container_name: docspell-consumedir
@ -41,10 +72,9 @@ services:
- "--delete" - "--delete"
- "-ir" - "-ir"
- "--header" - "--header"
- "Docspell-Integration:$DOCSPELL_HEADER_VALUE" - "Docspell-Integration:integration-password123"
- "/opt/docs" - "/opt/docs"
restart: unless-stopped restart: unless-stopped
env_file: ./.env
volumes: volumes:
- ./docs:/opt/docs - ./docs:/opt/docs
depends_on: depends_on:

View File

@ -1,94 +0,0 @@
# This is the configuration file for docspell. It contains two main
# namespaces: docspell.server and docspell.joex. Each provide the
# config for the respective component.
#
# They can be moved to different files, if necessary. For this example
# though, both components are configured in this single file.
#
# Below are only some settings that differ from the default. Please
# see https://docspell.org/docs/configure/#default-config for all
# options and their documentation. This page provides more
# information about the important config options.
#
# Note: this docker-compose setup is an example to get started. It
# sets up one rest-server, one joex, a postgres database and a solr
# all on the same machine.
# Define settings that are used in multiple places:
db_url="jdbc:postgresql://db:5432/dbname"
db_user="dbuser"
db_pass="dbpass"
solr_url="http://docspell-solr:8983/solr/docspell"
# This configures the restserver
docspell.server {
base-url = "http://localhost:7880"
bind {
address = "0.0.0.0"
}
integration-endpoint {
enabled = true
http-header {
enabled = true
header-value = ${?DOCSPELL_HEADER_VALUE}
}
}
# This is a special endpoint that allows some basic administration.
#
# This is used for some endpoints, for example:
# - re-create complete fulltext index:
# curl -XPOST -H'Docspell-Admin-Secret: xyz' http://localhost:7880/api/v1/admin/fts/reIndexAll
admin-endpoint {
# The secret. If empty, the endpoint is disabled.
secret = ""
}
# Configuration of the full-text search engine.
full-text-search {
enabled = true
solr = {
url = ${solr_url}
}
}
backend {
jdbc {
url = ${db_url}
user = ${db_user}
password = ${db_pass}
}
}
}
# This configures joex
#
# Note to joex: It is currently setup for one instance. Should you
# want to scale joex instance up (maybe to help processing a batch of
# files), there are two options:
#
# - look at https://github.com/eikek/docspell/pull/552 to elastically
# start and stop joex instances via docker-compose
# - set pool-size to some higher number; this requires to restart joex
#
docspell.joex {
base-url = "http://docspell-joex:7878"
bind {
address = "0.0.0.0"
}
jdbc {
url = ${db_url}
user = ${db_user}
password = ${db_pass}
}
full-text-search {
enabled = true
solr = {
url = ${solr_url}
}
}
scheduler {
pool-size = 1
}
}

View File

@ -25,8 +25,7 @@ getStarted version =
3. Run `docker-compose up`: 3. Run `docker-compose up`:
```bash ```bash
$ export DOCSPELL_HEADER_VALUE="my-secret-123" $ docker-compose up -d
$ docker-compose up
``` ```
The environment variable defines a secret that is shared between The environment variable defines a secret that is shared between

View File

@ -172,18 +172,25 @@ $ cd docspell/docker/docker-compose
Then run `docker-compose`: Then run `docker-compose`:
```bash ```bash
$ export DOCSPELL_HEADER_VALUE="my-secret-123" $ docker-compose up -d
$ docker-compose up
``` ```
The environment variable defines a secret that is shared between the If you look at `docker-compose.yml`, there are several environment
container watching a directory and the server. It is the header variables defined. A few that you should change, i.e. all "secrets":
defined for the [integration
endpoint](@/docs/api/upload.md#integration-endpoint) containers. You
can use whatever you like. Please see the help to the [dsc
tool](@/docs/tools/cli.md) docs for additional info.
Goto `http://localhost:7880`, signup and login. When signing up, you - `DOCSPELL_SERVER_ADMIN__ENDPOINT_SECRET`
- `DOCSPELL_SERVER_AUTH_SERVER__SECRET`
- `DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE`
Then, the value for
`DOCSPELL_SERVER_INTEGRATION__ENDPOINT_HTTP__HEADER_HEADER__VALUE`
must be duplicated in the consumedir command (both values must match).
It is the header defined for the [integration
endpoint](@/docs/api/upload.md#integration-endpoint). You can use
whatever you like, best something random. Please see the help to the
[dsc tool](@/docs/tools/cli.md) docs for additional info.
Goto `http://localhost:7880`, signup and login. When signing up,
choose the same name for collective and user. Then login with this choose the same name for collective and user. Then login with this
name and the password. name and the password.
@ -191,9 +198,19 @@ name and the password.
chose for the collective at registration) and place files in there for chose for the collective at registration) and place files in there for
importing them. importing them.
The directory contains a file `docspell.conf` that you can Docspell can be configured via environment variables or a config file.
[modify](@/docs/configure/_index.md) as needed. Please see the [configuration](@/docs/configure/_index.md) for more
details and possible values/variables. You can create a config file
and mount it into the container. Then specify the config file as the
an argument to the command, i.e. add a
``` yml
command:
- /path/to/config.conf
```
to the service definition (or add it to an existing `command:`
section).
### Override this setup ### Override this setup

View File

@ -429,8 +429,7 @@ defining an environment variable which gets picked up by the
containers defined in `docker-compose.yml`: containers defined in `docker-compose.yml`:
``` bash ``` bash
export DOCSPELL_HEADER_VALUE="my-secret" docker-compose up -d
docker-compose up
``` ```