Compare commits
2 Commits
master
...
monotek-pa
Author | SHA1 | Date | |
---|---|---|---|
|
38e58430da | ||
|
0d1b995c7b |
12
.env
12
.env
@ -1,14 +1,8 @@
|
|||||||
ELASTICSEARCH_VERSION=8.8.0
|
IMAGE_REPO=zammad/zammad-docker-compose
|
||||||
IMAGE_REPO=ghcr.io/zammad/zammad
|
|
||||||
MEMCACHE_SERVERS=zammad-memcached:11211
|
MEMCACHE_SERVERS=zammad-memcached:11211
|
||||||
MEMCACHE_VERSION=1.6.20-alpine
|
|
||||||
POSTGRES_DB=zammad_production
|
|
||||||
POSTGRES_PASS=zammad
|
POSTGRES_PASS=zammad
|
||||||
POSTGRES_USER=zammad
|
POSTGRES_USER=zammad
|
||||||
POSTGRES_HOST=zammad-postgresql
|
|
||||||
POSTGRES_PORT=5432
|
|
||||||
POSTGRES_VERSION=15.3-alpine
|
|
||||||
REDIS_URL=redis://zammad-redis:6379
|
REDIS_URL=redis://zammad-redis:6379
|
||||||
REDIS_VERSION=7.0.5-alpine
|
|
||||||
RESTART=always
|
RESTART=always
|
||||||
VERSION=6.0.0-66
|
# don't forget to add the minus before the version
|
||||||
|
VERSION=-5.2.0-9
|
||||||
|
16
.github/dependabot.yml
vendored
16
.github/dependabot.yml
vendored
@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: "docker"
|
|
||||||
directory: "/containers/zammad"
|
|
||||||
schedule:
|
|
||||||
interval: "weekly"
|
|
||||||
time: "09:00"
|
|
||||||
timezone: "Europe/Berlin"
|
|
||||||
|
|
||||||
- package-ecosystem: "github-actions"
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: "weekly"
|
|
||||||
time: "09:00"
|
|
||||||
timezone: "Europe/Berlin"
|
|
14
.github/docker-image-build.sh
vendored
Executable file
14
.github/docker-image-build.sh
vendored
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# build zammads docker & docker-compose images
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
DOCKER_IMAGES="zammad zammad-elasticsearch zammad-postgresql"
|
||||||
|
|
||||||
|
# shellcheck disable=SC2153
|
||||||
|
for DOCKER_IMAGE in ${DOCKER_IMAGES}; do
|
||||||
|
echo "Build Zammad Docker image ${DOCKER_IMAGE} for local or ci tests"
|
||||||
|
docker build --pull --no-cache --build-arg BUILD_DATE="$(date -u +'%Y-%m-%dT%H:%M:%SZ')" -t "${DOCKER_IMAGE}-local" -f "containers/${DOCKER_IMAGE}/Dockerfile" .
|
||||||
|
done
|
37
.github/release-drafter.yml
vendored
37
.github/release-drafter.yml
vendored
@ -1,37 +0,0 @@
|
|||||||
name-template: "v$RESOLVED_VERSION"
|
|
||||||
tag-template: "v$RESOLVED_VERSION"
|
|
||||||
categories:
|
|
||||||
- title: "🚀 Features"
|
|
||||||
labels:
|
|
||||||
- "feature"
|
|
||||||
- "enhancement"
|
|
||||||
- title: "🐛 Bug Fixes"
|
|
||||||
labels:
|
|
||||||
- "fix"
|
|
||||||
- "bugfix"
|
|
||||||
- "bug"
|
|
||||||
- title: "🧹 Maintenance"
|
|
||||||
labels:
|
|
||||||
- "chore"
|
|
||||||
- "dependencies"
|
|
||||||
version-resolver:
|
|
||||||
major:
|
|
||||||
labels:
|
|
||||||
- "feature"
|
|
||||||
minor:
|
|
||||||
labels:
|
|
||||||
- "enhancement"
|
|
||||||
patch:
|
|
||||||
labels:
|
|
||||||
- "fix"
|
|
||||||
- "bugfix"
|
|
||||||
- "bug"
|
|
||||||
- "chore"
|
|
||||||
- "dependencies"
|
|
||||||
default: patch
|
|
||||||
template: |
|
|
||||||
## Changes
|
|
||||||
|
|
||||||
$CHANGES
|
|
||||||
|
|
||||||
**Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION
|
|
16
.github/tests.sh
vendored
16
.github/tests.sh
vendored
@ -23,28 +23,16 @@ echo
|
|||||||
echo "Execute autowizard..."
|
echo "Execute autowizard..."
|
||||||
echo
|
echo
|
||||||
|
|
||||||
docker exec --env=AUTOWIZARD_RELATIVE_PATH=var/auto_wizard.json --env=DATABASE_URL=postgres://zammad:zammad@zammad-postgresql:5432/zammad_production zammad-docker-compose_zammad-railsserver_1 rake zammad:setup:auto_wizard
|
docker exec zammad-docker-compose_zammad-railsserver_1 rake zammad:setup:auto_wizard
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "Autowizard executed successful :)"
|
echo "Autowizard executed successful :)"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "Check DB for AutoWizard user"
|
|
||||||
echo
|
|
||||||
|
|
||||||
docker exec --env=DATABASE_URL=postgres://zammad:zammad@zammad-postgresql:5432/zammad_production zammad-docker-compose_zammad-railsserver_1 rails r "p User.find_by(email: 'info@zammad.org')" | grep 'info@zammad.org'
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "Check DB for AutoWizard user successfull :)"
|
|
||||||
echo
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "Fill DB with some random data"
|
echo "Fill DB with some random data"
|
||||||
echo
|
docker exec zammad-docker-compose_zammad-railsserver_1 rails r "FillDb.load(agents: 1,customers: 1,groups: 1,organizations: 1,overviews: 1,tickets: 1)"
|
||||||
|
|
||||||
docker exec --env=DATABASE_URL=postgres://zammad:zammad@zammad-postgresql:5432/zammad_production zammad-docker-compose_zammad-railsserver_1 rails r "FillDb.load(agents: 1,customers: 1,groups: 1,organizations: 1,overviews: 1,tickets: 1)"
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "DB fill successful :)"
|
echo "DB fill successful :)"
|
||||||
|
6
.github/workflows/ci-remote-image.yaml
vendored
6
.github/workflows/ci-remote-image.yaml
vendored
@ -3,11 +3,13 @@ name: ci-remote-image
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- '.env'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
run-remote-image-docker-compose:
|
run-remote-image-docker-compose:
|
||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
@ -19,7 +21,7 @@ jobs:
|
|||||||
run: docker-compose up --detach
|
run: docker-compose up --detach
|
||||||
|
|
||||||
- name: add autowizard file
|
- name: add autowizard file
|
||||||
run: docker cp .github/auto_wizard.json zammad-docker-compose_zammad-railsserver_1:/opt/zammad/var
|
run: docker cp .github/auto_wizard.json zammad-docker-compose_zammad-railsserver_1:/opt/zammad
|
||||||
|
|
||||||
- name: run tests
|
- name: run tests
|
||||||
run: .github/tests.sh
|
run: .github/tests.sh
|
||||||
|
28
.github/workflows/ci.yaml
vendored
28
.github/workflows/ci.yaml
vendored
@ -6,7 +6,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint-docker-compose-file:
|
lint-docker-compose-file:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
@ -15,7 +15,7 @@ jobs:
|
|||||||
run: docker-compose config
|
run: docker-compose config
|
||||||
|
|
||||||
super-linter:
|
super-linter:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Code
|
- name: Checkout Code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
@ -23,10 +23,32 @@ jobs:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Lint Code Base
|
- name: Lint Code Base
|
||||||
uses: github/super-linter/slim@v5
|
uses: github/super-linter/slim@v4
|
||||||
env:
|
env:
|
||||||
DEFAULT_BRANCH: master
|
DEFAULT_BRANCH: master
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
LINTER_RULES_PATH: .github/linters
|
LINTER_RULES_PATH: .github/linters
|
||||||
VALIDATE_ALL_CODEBASE: false
|
VALIDATE_ALL_CODEBASE: false
|
||||||
VALIDATE_JSCPD: false
|
VALIDATE_JSCPD: false
|
||||||
|
|
||||||
|
build-and-run-docker-compose:
|
||||||
|
needs:
|
||||||
|
- lint-docker-compose-file
|
||||||
|
- super-linter
|
||||||
|
timeout-minutes: 20
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: build docker containers
|
||||||
|
run: .github/docker-image-build.sh
|
||||||
|
|
||||||
|
- name: run docker-compose up
|
||||||
|
run: docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.override-local.yml up --detach
|
||||||
|
|
||||||
|
- name: add autowizard file
|
||||||
|
run: docker cp .github/auto_wizard.json zammad-docker-compose_zammad-railsserver_1:/opt/zammad
|
||||||
|
|
||||||
|
- name: run tests
|
||||||
|
run: .github/tests.sh
|
||||||
|
22
.github/workflows/release-drafter.yaml
vendored
22
.github/workflows/release-drafter.yaml
vendored
@ -1,22 +0,0 @@
|
|||||||
name: Release Drafter
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
pull_request:
|
|
||||||
types: [opened, reopened, synchronize]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update_release_draft:
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- uses: release-drafter/release-drafter@v5
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
58
README.md
58
README.md
@ -6,29 +6,22 @@ twitter, chat and emails. It is distributed under the GNU AFFERO General Public
|
|||||||
License (AGPL). Do you receive many emails and want to answer them with a team of agents?
|
License (AGPL). Do you receive many emails and want to answer them with a team of agents?
|
||||||
You're going to love Zammad!
|
You're going to love Zammad!
|
||||||
|
|
||||||
## Use cases
|
## Use case for this repository
|
||||||
|
|
||||||
This repository is the starting point if you want to:
|
This repository is meant to be the starting point for somebody who likes to use dockerized multi-container Zammad in production.
|
||||||
|
|
||||||
- deploy Zammad in a containerized production environment
|
## Getting started with zammad-docker-compose
|
||||||
- test the current `stable` or `develop` versions of Zammad
|
|
||||||
|
|
||||||
## Getting started
|
[Learn more on Zammads documentation](https://docs.zammad.org/en/latest/install/docker-compose.html)
|
||||||
|
|
||||||
[Learn more on Zammad’s documentation](https://docs.zammad.org/en/latest/install/docker-compose.html)
|
|
||||||
|
|
||||||
## Upgrading
|
|
||||||
|
|
||||||
For upgrading instructions see our [Releases](https://github.com/zammad/zammad-docker-compose/releases).
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
[![ci-remote-image](https://github.com/zammad/zammad-docker-compose/actions/workflows/ci-remote-image.yaml/badge.svg)](https://github.com/zammad/zammad-docker-compose/actions/workflows/ci-remote-image.yaml) [![Dockerhub Pulls](https://badgen.net/docker/pulls/zammad/zammad-docker-compose?icon=docker&label=pulls)](https://hub.docker.com/r/zammad/zammad-docker-compose/)
|
[![CI Status](https://github.com/zammad/zammad-docker-compose/workflows/ci/badge.svg)](https://github.com/zammad/zammad-docker-compose/actions) [![Docker Pulls](https://badgen.net/docker/pulls/zammad/zammad-docker-compose?icon=docker&label=pulls)](https://hub.docker.com/r/zammad/zammad-docker-compose/)
|
||||||
|
|
||||||
## Using a reverse proxy
|
## Using a reverse proxy
|
||||||
|
|
||||||
In environments with more then one web applications it is necessary to use a reverse proxy to route connections to port 80 and 443 to the right application.
|
In environments with more then one web applications it is necessary to use a reverse proxy to route connections to port 80 and 443 to the right application.
|
||||||
To run Zammad behind a reverse proxy, we provide `docker-compose.proxy-example.yml` as a starting point.
|
To run Zammad behind a revers proxy, we provide `docker-compose.proxy-example.yml` as a starting point.
|
||||||
|
|
||||||
1. Copy `./.examples/proxy/docker-compose.proxy-example.yml` to your own configuration, e.g. `./docker-compose.prod.yml`
|
1. Copy `./.examples/proxy/docker-compose.proxy-example.yml` to your own configuration, e.g. `./docker-compose.prod.yml`
|
||||||
`cp ./.examples/proxy/docker-compose.proxy-example.yml ./docker-compose.prod.yml`
|
`cp ./.examples/proxy/docker-compose.proxy-example.yml ./docker-compose.prod.yml`
|
||||||
@ -49,4 +42,41 @@ RANCHER_URL=http://RANCHER_HOST:8080 rancher-compose --env-file=.env up
|
|||||||
|
|
||||||
Elasticsearch is an optional, but strongly recommended dependency for Zammad. More details can be found in the [documentation](https://docs.zammad.org/en/latest/prerequisites/software.html#elasticsearch-optional). There are however certain scenarios when running without Elasticsearch may be desired, e.g. for very small teams, for teams with limited budget or as a temporary solution for an unplanned Elasticsearch downtime or planned cluster upgrade.
|
Elasticsearch is an optional, but strongly recommended dependency for Zammad. More details can be found in the [documentation](https://docs.zammad.org/en/latest/prerequisites/software.html#elasticsearch-optional). There are however certain scenarios when running without Elasticsearch may be desired, e.g. for very small teams, for teams with limited budget or as a temporary solution for an unplanned Elasticsearch downtime or planned cluster upgrade.
|
||||||
|
|
||||||
Elasticsearch is enabled by default in the example `docker-compose.yml` file. It is also by default required to run the "zammad-init" command. Disabling Elasticsearch is possible by setting a special environment variable: `ELASTICSEARCH_ENABLED=false` for the `zammad-init` container and removing all references to Elasticsearch everywhere else: the `zammad-elasticsearch` container, its volume and links to it.
|
Elasticsearch is enabled by default in the example `docker-compose.yml` file. It is also by default required to run the "zammad-init" command. Disabling Elasticsearch is possible by setting a special environment variable: `ELASTICSEARCH_ENABLED=false` for the `zammad-init` container and removing all references to Elasticsearch everywhere else: the `zammad-elasticsearch` container, it's volume and links to it.
|
||||||
|
|
||||||
|
## Upgrading
|
||||||
|
|
||||||
|
### From =< 3.3.0-12
|
||||||
|
|
||||||
|
We've updated the Elasticsearch image from 5.6 to 7.6.
|
||||||
|
As there is no direct upgrade path we have to delete all Elasticsearch indices and rebuild them.
|
||||||
|
This will depend on the name of your docker container and volume, which depends on the checkout directory (`zammad-docker-compose` by default):
|
||||||
|
|
||||||
|
```console
|
||||||
|
docker-compose stop
|
||||||
|
docker container rm zammad-docker-compose_zammad-elasticsearch_1
|
||||||
|
docker volume rm zammad-docker-compose_elasticsearch-data
|
||||||
|
docker-compose up --no-recreate
|
||||||
|
```
|
||||||
|
|
||||||
|
To workaround the [changes in the PostgreSQL 9.6 container](https://github.com/docker-library/postgres/commit/f1bc8782e7e57cc403d0b32c0e24599535859f76) do the following:
|
||||||
|
|
||||||
|
```console
|
||||||
|
docker-compose start
|
||||||
|
docker exec -it zammaddockercompose_zammad-postgresql_1 bash
|
||||||
|
psql --username postgres --dbname zammad_production
|
||||||
|
CREATE USER zammad;
|
||||||
|
ALTER USER zammad WITH PASSWORD 'zammad';
|
||||||
|
ALTER USER zammad WITH SUPERUSER CREATEDB;
|
||||||
|
```
|
||||||
|
|
||||||
|
### From =< 3.6.0-65
|
||||||
|
|
||||||
|
To be able to run Zammad container with an unprivileged user we had to change the port Nginx uses from 80 to 8080, so Zammad needs to be accessed via <http://localhost:8080> instead of <http://localhost> now!
|
||||||
|
|
||||||
|
This change will also affect you, if you use a reverse proxy, like Traefik or Haproxy, in front of Zammad as your reverse proxy configuration needs to be adapted to point to port 8080 now.
|
||||||
|
|
||||||
|
### From =< 4.0.0 to 5.0.0
|
||||||
|
|
||||||
|
Memchached config changed. If you use the old env vars `MEMCACHED_HOST` & `MEMCACHED_PORT` adapt to `MEMCACHE_SERVERS`.
|
||||||
|
Redis is a dependency for the Websocket server now.
|
||||||
|
17
containers/zammad-elasticsearch/Dockerfile
Normal file
17
containers/zammad-elasticsearch/Dockerfile
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
FROM docker.elastic.co/elasticsearch/elasticsearch:7.17.3
|
||||||
|
ARG BUILD_DATE
|
||||||
|
|
||||||
|
LABEL org.label-schema.build-date="$BUILD_DATE" \
|
||||||
|
org.label-schema.name="Zammad" \
|
||||||
|
org.label-schema.license="AGPL-3.0" \
|
||||||
|
org.label-schema.description="Docker container for Zammad - Elasticsearch" \
|
||||||
|
org.label-schema.url="https://zammad.org" \
|
||||||
|
org.label-schema.vcs-url="https://github.com/zammad/zammad" \
|
||||||
|
org.label-schema.vcs-type="Git" \
|
||||||
|
org.label-schema.vendor="Zammad" \
|
||||||
|
org.label-schema.schema-version="5.2.0" \
|
||||||
|
org.label-schema.docker.cmd="sysctl -w vm.max_map_count=262144;docker-compose up"
|
||||||
|
|
||||||
|
SHELL ["/bin/bash", "-e", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
|
RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch ingest-attachment
|
20
containers/zammad-postgresql/Dockerfile
Normal file
20
containers/zammad-postgresql/Dockerfile
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
FROM postgres:9.6.24-alpine
|
||||||
|
|
||||||
|
ARG BUILD_DATE
|
||||||
|
|
||||||
|
LABEL org.label-schema.build-date="$BUILD_DATE" \
|
||||||
|
org.label-schema.name="Zammad" \
|
||||||
|
org.label-schema.license="AGPL-3.0" \
|
||||||
|
org.label-schema.description="Docker container for Zammad - Postgresql" \
|
||||||
|
org.label-schema.url="https://zammad.org" \
|
||||||
|
org.label-schema.vcs-url="https://github.com/zammad/zammad" \
|
||||||
|
org.label-schema.vcs-type="Git" \
|
||||||
|
org.label-schema.vendor="Zammad" \
|
||||||
|
org.label-schema.schema-version="5.2.0" \
|
||||||
|
org.label-schema.docker.cmd="sysctl -w vm.max_map_count=262144;docker-compose up"
|
||||||
|
|
||||||
|
SHELL ["/bin/bash", "-e", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
|
# copy backup script
|
||||||
|
COPY containers/zammad-postgresql/backup.sh /usr/local/bin/
|
||||||
|
RUN chmod +x /usr/local/bin/backup.sh
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
: "${ZAMMAD_DIR:=/opt/zammad/var}"
|
: "${ZAMMAD_DIR:=/opt/zammad}"
|
||||||
: "${BACKUP_DIR:=/var/tmp/zammad}"
|
: "${BACKUP_DIR:=/var/tmp/zammad}"
|
||||||
: "${ZAMMAD_RAILSSERVER_HOST:=zammad-railsserver}"
|
: "${ZAMMAD_RAILSSERVER_HOST:=zammad-railsserver}"
|
||||||
: "${ZAMMAD_RAILSSERVER_PORT:=3000}"
|
: "${ZAMMAD_RAILSSERVER_PORT:=3000}"
|
||||||
@ -11,7 +11,7 @@ set -e
|
|||||||
: "${POSTGRESQL_DB:=zammad_production}"
|
: "${POSTGRESQL_DB:=zammad_production}"
|
||||||
|
|
||||||
function check_railsserver_available {
|
function check_railsserver_available {
|
||||||
until (echo > "/dev/tcp/$ZAMMAD_RAILSSERVER_HOST/$ZAMMAD_RAILSSERVER_PORT") &> /dev/null; do
|
until (echo > /dev/tcp/${ZAMMAD_RAILSSERVER_HOST}/${ZAMMAD_RAILSSERVER_PORT}) &> /dev/null; do
|
||||||
echo "waiting for railsserver to be ready..."
|
echo "waiting for railsserver to be ready..."
|
||||||
sleep 60
|
sleep 60
|
||||||
done
|
done
|
||||||
@ -34,8 +34,6 @@ function zammad_backup {
|
|||||||
|
|
||||||
#db backup
|
#db backup
|
||||||
pg_dump --dbname=postgresql://"${POSTGRESQL_USER}:${POSTGRESQL_PASSWORD}@${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/${POSTGRESQL_DB}" | gzip > "${BACKUP_DIR}"/"${TIMESTAMP}"_zammad_db.psql.gz
|
pg_dump --dbname=postgresql://"${POSTGRESQL_USER}:${POSTGRESQL_PASSWORD}@${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/${POSTGRESQL_DB}" | gzip > "${BACKUP_DIR}"/"${TIMESTAMP}"_zammad_db.psql.gz
|
||||||
|
|
||||||
echo "backup finished :)"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ "$1" = 'zammad-backup' ]; then
|
if [ "$1" = 'zammad-backup' ]; then
|
||||||
@ -43,15 +41,10 @@ if [ "$1" = 'zammad-backup' ]; then
|
|||||||
check_railsserver_available
|
check_railsserver_available
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
NOW_TIMESTAMP=$(date +%s)
|
|
||||||
TOMORROW_DATE=$(date -d@"$((NOW_TIMESTAMP + 24*60*60))" +%Y-%m-%d)
|
|
||||||
|
|
||||||
zammad_backup
|
zammad_backup
|
||||||
|
|
||||||
NEXT_TIMESTAMP=$(date -d "$TOMORROW_DATE $BACKUP_TIME" +%s)
|
# wait until next backup
|
||||||
NOW_TIMESTAMP=$(date +%s)
|
sleep "${BACKUP_SLEEP}"
|
||||||
|
|
||||||
sleep $((NEXT_TIMESTAMP - NOW_TIMESTAMP))
|
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
65
containers/zammad/Dockerfile
Normal file
65
containers/zammad/Dockerfile
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# note: zammad is currently incompatible to alpine because of:
|
||||||
|
# https://github.com/docker-library/ruby/issues/113
|
||||||
|
FROM ruby:3.0.4-slim AS builder
|
||||||
|
|
||||||
|
ARG BUILD_DATE
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
ENV GIT_BRANCH stable
|
||||||
|
ENV GIT_URL ${PROJECT_URL}.git
|
||||||
|
ENV PROJECT_URL https://github.com/zammad/zammad
|
||||||
|
ENV RAILS_ENV production
|
||||||
|
ENV RAILS_LOG_TO_STDOUT true
|
||||||
|
ENV TAR_GZ_URL ${PROJECT_URL}/archive/${GIT_BRANCH}.tar.gz
|
||||||
|
ENV ZAMMAD_DIR /opt/zammad
|
||||||
|
ENV ZAMMAD_READY_FILE ${ZAMMAD_DIR}/tmp/zammad.ready
|
||||||
|
ENV ZAMMAD_TMP_DIR /tmp/zammad-${GIT_BRANCH}
|
||||||
|
ENV ZAMMAD_USER zammad
|
||||||
|
|
||||||
|
SHELL ["/bin/bash", "-e", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
|
# install zammad
|
||||||
|
COPY containers/zammad/setup.sh /tmp
|
||||||
|
RUN chmod +x /tmp/setup.sh; \
|
||||||
|
/tmp/setup.sh builder
|
||||||
|
|
||||||
|
|
||||||
|
FROM ruby:3.0.4-slim
|
||||||
|
|
||||||
|
ARG BUILD_DATE
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
LABEL org.label-schema.build-date="$BUILD_DATE" \
|
||||||
|
org.label-schema.name="Zammad" \
|
||||||
|
org.label-schema.license="AGPL-3.0" \
|
||||||
|
org.label-schema.description="Docker container for Zammad - Data Container" \
|
||||||
|
org.label-schema.url="https://zammad.org" \
|
||||||
|
org.label-schema.vcs-url="https://github.com/zammad/zammad" \
|
||||||
|
org.label-schema.vcs-type="Git" \
|
||||||
|
org.label-schema.vendor="Zammad" \
|
||||||
|
org.label-schema.schema-version="5.2.0" \
|
||||||
|
org.label-schema.docker.cmd="sysctl -w vm.max_map_count=262144;docker-compose up"
|
||||||
|
|
||||||
|
ENV GIT_BRANCH stable
|
||||||
|
ENV RAILS_ENV production
|
||||||
|
ENV RAILS_LOG_TO_STDOUT true
|
||||||
|
ENV ZAMMAD_DIR /opt/zammad
|
||||||
|
ENV ZAMMAD_READY_FILE ${ZAMMAD_DIR}/tmp/zammad.ready
|
||||||
|
ENV ZAMMAD_TMP_DIR /tmp/zammad-${GIT_BRANCH}
|
||||||
|
ENV ZAMMAD_USER zammad
|
||||||
|
|
||||||
|
COPY containers/zammad/setup.sh /tmp
|
||||||
|
RUN chmod +x /tmp/setup.sh; \
|
||||||
|
/tmp/setup.sh runner
|
||||||
|
|
||||||
|
COPY --from=builder ${ZAMMAD_TMP_DIR} ${ZAMMAD_TMP_DIR}
|
||||||
|
COPY --from=builder /usr/local/bundle /usr/local/bundle
|
||||||
|
|
||||||
|
# docker init
|
||||||
|
COPY containers/zammad/docker-entrypoint.sh /
|
||||||
|
RUN chmod +x /docker-entrypoint.sh
|
||||||
|
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||||
|
|
||||||
|
USER zammad
|
||||||
|
|
||||||
|
WORKDIR ${ZAMMAD_DIR}
|
173
containers/zammad/docker-entrypoint.sh
Executable file
173
containers/zammad/docker-entrypoint.sh
Executable file
@ -0,0 +1,173 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
: "${AUTOWIZARD_JSON:=''}"
|
||||||
|
: "${ELASTICSEARCH_ENABLED:=true}"
|
||||||
|
: "${ELASTICSEARCH_HOST:=zammad-elasticsearch}"
|
||||||
|
: "${ELASTICSEARCH_PORT:=9200}"
|
||||||
|
: "${ELASTICSEARCH_SCHEMA:=http}"
|
||||||
|
: "${ELASTICSEARCH_NAMESPACE:=zammad}"
|
||||||
|
: "${ELASTICSEARCH_REINDEX:=true}"
|
||||||
|
: "${ELASTICSEARCH_SSL_VERIFY:=true}"
|
||||||
|
: "${NGINX_PORT:=8080}"
|
||||||
|
: "${NGINX_SERVER_NAME:=_}"
|
||||||
|
: "${NGINX_SERVER_SCHEME:=\$scheme}"
|
||||||
|
: "${POSTGRESQL_HOST:=zammad-postgresql}"
|
||||||
|
: "${POSTGRESQL_PORT:=5432}"
|
||||||
|
: "${POSTGRESQL_USER:=zammad}"
|
||||||
|
: "${POSTGRESQL_PASS:=zammad}"
|
||||||
|
: "${POSTGRESQL_DB:=zammad_production}"
|
||||||
|
: "${POSTGRESQL_DB_CREATE:=true}"
|
||||||
|
: "${RAILS_TRUSTED_PROXIES:=['127.0.0.1', '::1']}"
|
||||||
|
: "${RSYNC_ADDITIONAL_PARAMS:=--no-perms --no-owner}"
|
||||||
|
: "${ZAMMAD_RAILSSERVER_HOST:=zammad-railsserver}"
|
||||||
|
: "${ZAMMAD_RAILSSERVER_PORT:=3000}"
|
||||||
|
: "${ZAMMAD_WEBSOCKET_HOST:=zammad-websocket}"
|
||||||
|
: "${ZAMMAD_WEBSOCKET_PORT:=6042}"
|
||||||
|
: "${ZAMMAD_WEB_CONCURRENCY:=0}"
|
||||||
|
|
||||||
|
function check_zammad_ready {
|
||||||
|
sleep 15
|
||||||
|
until [ -f "${ZAMMAD_READY_FILE}" ]; do
|
||||||
|
echo "waiting for init container to finish install or update..."
|
||||||
|
sleep 10
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# zammad init
|
||||||
|
if [ "$1" = 'zammad-init' ]; then
|
||||||
|
# install / update zammad
|
||||||
|
test -f "${ZAMMAD_READY_FILE}" && rm "${ZAMMAD_READY_FILE}"
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
rsync -a ${RSYNC_ADDITIONAL_PARAMS} --delete --exclude 'public/assets/images/*' --exclude 'storage/fs/*' "${ZAMMAD_TMP_DIR}/" "${ZAMMAD_DIR}"
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
rsync -a ${RSYNC_ADDITIONAL_PARAMS} "${ZAMMAD_TMP_DIR}"/public/assets/images/ "${ZAMMAD_DIR}"/public/assets/images
|
||||||
|
|
||||||
|
until (echo > /dev/tcp/"${POSTGRESQL_HOST}"/"${POSTGRESQL_PORT}") &> /dev/null; do
|
||||||
|
echo "zammad railsserver waiting for postgresql server to be ready..."
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
|
cd "${ZAMMAD_DIR}"
|
||||||
|
|
||||||
|
# configure database
|
||||||
|
# https://stackoverflow.com/questions/407523/escape-a-string-for-a-sed-replace-pattern
|
||||||
|
ESCAPED_POSTGRESQL_PASS=$(echo "$POSTGRESQL_PASS" | sed -e 's/[\/&]/\\&/g')
|
||||||
|
sed -e "s#.*adapter:.*# adapter: postgresql#g" -e "s#.*database:.*# database: ${POSTGRESQL_DB}#g" -e "s#.*username:.*# username: ${POSTGRESQL_USER}#g" -e "s#.*password:.*# password: ${ESCAPED_POSTGRESQL_PASS}\\n host: ${POSTGRESQL_HOST}\\n port: ${POSTGRESQL_PORT}#g" < contrib/packager.io/database.yml.pkgr > config/database.yml
|
||||||
|
|
||||||
|
# configure trusted proxies
|
||||||
|
sed -i -e "s#config.action_dispatch.trusted_proxies =.*#config.action_dispatch.trusted_proxies = ${RAILS_TRUSTED_PROXIES}#" config/environments/production.rb
|
||||||
|
|
||||||
|
# check if database exists / update to new version
|
||||||
|
echo "initialising / updating database..."
|
||||||
|
if ! (bundle exec rails r 'puts User.any?' 2> /dev/null | grep -q true); then
|
||||||
|
if [ "${POSTGRESQL_DB_CREATE}" == "true" ]; then
|
||||||
|
bundle exec rake db:create
|
||||||
|
fi
|
||||||
|
bundle exec rake db:migrate
|
||||||
|
bundle exec rake db:seed
|
||||||
|
|
||||||
|
# create autowizard.json on first install
|
||||||
|
if base64 -d <<< ${AUTOWIZARD_JSON} &>> /dev/null; then
|
||||||
|
echo "Saving autowizard json payload..."
|
||||||
|
base64 -d <<< "${AUTOWIZARD_JSON}" > auto_wizard.json
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
bundle exec rails r "Cache.clear"
|
||||||
|
bundle exec rake db:migrate
|
||||||
|
fi
|
||||||
|
|
||||||
|
# es config
|
||||||
|
echo "changing settings..."
|
||||||
|
if [ "${ELASTICSEARCH_ENABLED}" == "false" ]; then
|
||||||
|
bundle exec rails r "Setting.set('es_url', '')"
|
||||||
|
else
|
||||||
|
bundle exec rails r "Setting.set('es_url', '${ELASTICSEARCH_SCHEMA}://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}')"
|
||||||
|
|
||||||
|
bundle exec rails r "Setting.set('es_index', '${ELASTICSEARCH_NAMESPACE}')"
|
||||||
|
|
||||||
|
if [ -n "${ELASTICSEARCH_USER}" ] && [ -n "${ELASTICSEARCH_PASS}" ]; then
|
||||||
|
bundle exec rails r "Setting.set('es_user', \"${ELASTICSEARCH_USER}\")"
|
||||||
|
bundle exec rails r "Setting.set('es_password', \"${ELASTICSEARCH_PASS}\")"
|
||||||
|
fi
|
||||||
|
|
||||||
|
until (echo > /dev/tcp/${ELASTICSEARCH_HOST}/${ELASTICSEARCH_PORT}) &> /dev/null; do
|
||||||
|
echo "zammad railsserver waiting for elasticsearch server to be ready..."
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "${ELASTICSEARCH_SSL_VERIFY}" == "false" ]; then
|
||||||
|
SSL_SKIP_VERIFY="-k"
|
||||||
|
else
|
||||||
|
SSL_SKIP_VERIFY=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${ELASTICSEARCH_REINDEX}" == "true" ]; then
|
||||||
|
if ! curl -s "${SSL_SKIP_VERIFY}" "${ELASTICSEARCH_SCHEMA}://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/_cat/indices" | grep -q zammad; then
|
||||||
|
echo "rebuilding es searchindex..."
|
||||||
|
bundle exec rake zammad:searchindex:rebuild
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create install ready file
|
||||||
|
echo 'zammad-init' > "${ZAMMAD_READY_FILE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# zammad nginx
|
||||||
|
if [ "$1" = 'zammad-nginx' ]; then
|
||||||
|
check_zammad_ready
|
||||||
|
|
||||||
|
# configure nginx
|
||||||
|
sed -e "s#\(listen\)\(.*\)80#\1\2${NGINX_PORT}#g" \
|
||||||
|
-e "s#proxy_set_header X-Forwarded-Proto .*;#proxy_set_header X-Forwarded-Proto ${NGINX_SERVER_SCHEME};#g" \
|
||||||
|
-e "s#server .*:3000#server ${ZAMMAD_RAILSSERVER_HOST}:${ZAMMAD_RAILSSERVER_PORT}#g" \
|
||||||
|
-e "s#server .*:6042#server ${ZAMMAD_WEBSOCKET_HOST}:${ZAMMAD_WEBSOCKET_PORT}#g" \
|
||||||
|
-e "s#server_name .*#server_name ${NGINX_SERVER_NAME};#g" \
|
||||||
|
-e 's#/var/log/nginx/zammad.\(access\|error\).log#/dev/stdout#g' < contrib/nginx/zammad.conf > /etc/nginx/sites-enabled/default
|
||||||
|
|
||||||
|
echo "starting nginx..."
|
||||||
|
|
||||||
|
exec /usr/sbin/nginx -g 'daemon off;'
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# zammad-railsserver
|
||||||
|
if [ "$1" = 'zammad-railsserver' ]; then
|
||||||
|
test -f /opt/zammad/tmp/pids/server.pid && rm /opt/zammad/tmp/pids/server.pid
|
||||||
|
|
||||||
|
check_zammad_ready
|
||||||
|
|
||||||
|
cd "${ZAMMAD_DIR}"
|
||||||
|
|
||||||
|
echo "starting railsserver... with WEB_CONCURRENCY=${ZAMMAD_WEB_CONCURRENCY}"
|
||||||
|
|
||||||
|
#shellcheck disable=SC2101
|
||||||
|
exec bundle exec puma -b tcp://[::]:"${ZAMMAD_RAILSSERVER_PORT}" -w "${ZAMMAD_WEB_CONCURRENCY}" -e "${RAILS_ENV}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# zammad-scheduler
|
||||||
|
if [ "$1" = 'zammad-scheduler' ]; then
|
||||||
|
check_zammad_ready
|
||||||
|
|
||||||
|
cd "${ZAMMAD_DIR}"
|
||||||
|
|
||||||
|
echo "starting background services..."
|
||||||
|
|
||||||
|
exec bundle exec script/background-worker.rb start
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# zammad-websocket
|
||||||
|
if [ "$1" = 'zammad-websocket' ]; then
|
||||||
|
check_zammad_ready
|
||||||
|
|
||||||
|
cd "${ZAMMAD_DIR}"
|
||||||
|
|
||||||
|
echo "starting websocket server..."
|
||||||
|
|
||||||
|
exec bundle exec script/websocket-server.rb -b 0.0.0.0 -p "${ZAMMAD_WEBSOCKET_PORT}" start
|
||||||
|
fi
|
59
containers/zammad/setup.sh
Executable file
59
containers/zammad/setup.sh
Executable file
@ -0,0 +1,59 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# install dependencies
|
||||||
|
if [ "$1" = 'builder' ]; then
|
||||||
|
PACKAGES="build-essential curl git libimlib2-dev libpq-dev shared-mime-info"
|
||||||
|
elif [ "$1" = 'runner' ]; then
|
||||||
|
PACKAGES="curl libimlib2 libpq5 nginx rsync"
|
||||||
|
fi
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get upgrade -y
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
apt-get install -y --no-install-recommends ${PACKAGES}
|
||||||
|
|
||||||
|
if [ "$1" = 'builder' ]; then
|
||||||
|
# Install Node.js 16 repository from Nodesource
|
||||||
|
apt-get --no-install-recommends -y install gnupg
|
||||||
|
KEYRING=/usr/share/keyrings/nodesource.gpg
|
||||||
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | tee "$KEYRING" >/dev/null
|
||||||
|
cat - > /etc/apt/sources.list.d/nodesource.list <<NODESOURCE_LIST
|
||||||
|
deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x buster main
|
||||||
|
NODESOURCE_LIST
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get --no-install-recommends -y install nodejs
|
||||||
|
npm -g install yarn
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clean-up
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# install zammad
|
||||||
|
groupadd -g 1000 "${ZAMMAD_USER}"
|
||||||
|
useradd -M -d "${ZAMMAD_DIR}" -s /bin/bash -u 1000 -g 1000 "${ZAMMAD_USER}"
|
||||||
|
|
||||||
|
if [ "$1" = 'builder' ]; then
|
||||||
|
cd "$(dirname "${ZAMMAD_TMP_DIR}")"
|
||||||
|
curl -s -J -L -O "${TAR_GZ_URL}"
|
||||||
|
tar -xzf zammad-"${GIT_BRANCH}".tar.gz
|
||||||
|
rm zammad-"${GIT_BRANCH}".tar.gz
|
||||||
|
cd "${ZAMMAD_TMP_DIR}"
|
||||||
|
bundle config set without 'test development mysql'
|
||||||
|
bundle install
|
||||||
|
sed -e 's#.*adapter: postgresql# adapter: nulldb#g' -e 's#.*username:.*# username: postgres#g' -e 's#.*password:.*# password: \n host: zammad-postgresql\n#g' < contrib/packager.io/database.yml.pkgr > config/database.yml
|
||||||
|
sed -i "/require 'rails\/all'/a require\ 'nulldb'" config/application.rb
|
||||||
|
touch db/schema.rb
|
||||||
|
bundle exec rake assets:precompile
|
||||||
|
rm -r tmp/cache
|
||||||
|
script/build/cleanup.sh
|
||||||
|
chown -R "${ZAMMAD_USER}":"${ZAMMAD_USER}" "${ZAMMAD_TMP_DIR}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set nginx file permissions and settings
|
||||||
|
if [ "$1" = 'runner' ]; then
|
||||||
|
sed -i -e "s#user www-data;##g" -e 's#/var/log/nginx/\(access\|error\).log#/dev/stdout#g' -e 's#pid /run/nginx.pid;#pid /tmp/nginx.pid;#g' /etc/nginx/nginx.conf
|
||||||
|
mkdir -p "${ZAMMAD_DIR}" /var/log/nginx
|
||||||
|
chown -R "${ZAMMAD_USER}":"${ZAMMAD_USER}" /etc/nginx "${ZAMMAD_DIR}" /var/lib/nginx /var/log/nginx
|
||||||
|
fi
|
@ -3,12 +3,21 @@ version: '3'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
|
|
||||||
|
zammad-backup:
|
||||||
|
image: zammad-postgresql-local
|
||||||
|
|
||||||
|
zammad-elasticsearch:
|
||||||
|
image: zammad-elasticsearch-local
|
||||||
|
|
||||||
zammad-init:
|
zammad-init:
|
||||||
image: zammad-local
|
image: zammad-local
|
||||||
|
|
||||||
zammad-nginx:
|
zammad-nginx:
|
||||||
image: zammad-local
|
image: zammad-local
|
||||||
|
|
||||||
|
zammad-postgresql:
|
||||||
|
image: zammad-postgresql-local
|
||||||
|
|
||||||
zammad-railsserver:
|
zammad-railsserver:
|
||||||
image: zammad-local
|
image: zammad-local
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
version: '3.8'
|
version: '3'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
|
||||||
@ -10,24 +10,23 @@ services:
|
|||||||
- zammad-postgresql
|
- zammad-postgresql
|
||||||
entrypoint: /usr/local/bin/backup.sh
|
entrypoint: /usr/local/bin/backup.sh
|
||||||
environment:
|
environment:
|
||||||
- BACKUP_TIME=03:00
|
- BACKUP_SLEEP=86400
|
||||||
- HOLD_DAYS=10
|
- HOLD_DAYS=10
|
||||||
- POSTGRESQL_DB=${POSTGRES_DB}
|
|
||||||
- POSTGRESQL_USER=${POSTGRES_USER}
|
- POSTGRESQL_USER=${POSTGRES_USER}
|
||||||
- POSTGRESQL_PASSWORD=${POSTGRES_PASS}
|
- POSTGRESQL_PASSWORD=${POSTGRES_PASS}
|
||||||
- TZ=Europe/Berlin
|
image: ${IMAGE_REPO}:zammad-postgresql${VERSION}
|
||||||
image: postgres:${POSTGRES_VERSION}
|
|
||||||
restart: ${RESTART}
|
restart: ${RESTART}
|
||||||
volumes:
|
volumes:
|
||||||
- zammad-backup:/var/tmp/zammad
|
- zammad-backup:/var/tmp/zammad
|
||||||
- zammad-var:/opt/zammad/var:ro
|
- zammad-data:/opt/zammad
|
||||||
- ./scripts/backup.sh:/usr/local/bin/backup.sh:ro
|
|
||||||
|
|
||||||
zammad-elasticsearch:
|
zammad-elasticsearch:
|
||||||
image: bitnami/elasticsearch:${ELASTICSEARCH_VERSION}
|
environment:
|
||||||
|
- discovery.type=single-node
|
||||||
|
image: ${IMAGE_REPO}:zammad-elasticsearch${VERSION}
|
||||||
restart: ${RESTART}
|
restart: ${RESTART}
|
||||||
volumes:
|
volumes:
|
||||||
- elasticsearch-data:/bitnami/elasticsearch/data
|
- elasticsearch-data:/usr/share/elasticsearch/data
|
||||||
|
|
||||||
zammad-init:
|
zammad-init:
|
||||||
command: ["zammad-init"]
|
command: ["zammad-init"]
|
||||||
@ -35,17 +34,17 @@ services:
|
|||||||
- zammad-postgresql
|
- zammad-postgresql
|
||||||
environment:
|
environment:
|
||||||
- MEMCACHE_SERVERS=${MEMCACHE_SERVERS}
|
- MEMCACHE_SERVERS=${MEMCACHE_SERVERS}
|
||||||
|
- POSTGRESQL_USER=${POSTGRES_USER}
|
||||||
|
- POSTGRESQL_PASS=${POSTGRES_PASS}
|
||||||
- REDIS_URL=${REDIS_URL}
|
- REDIS_URL=${REDIS_URL}
|
||||||
image: ${IMAGE_REPO}:${VERSION}
|
image: ${IMAGE_REPO}:zammad${VERSION}
|
||||||
restart: on-failure
|
restart: on-failure
|
||||||
user: 0:0
|
|
||||||
volumes:
|
volumes:
|
||||||
- zammad-config-nginx:/etc/nginx/sites-enabled
|
- zammad-data:/opt/zammad
|
||||||
- zammad-var:/opt/zammad/var
|
|
||||||
|
|
||||||
zammad-memcached:
|
zammad-memcached:
|
||||||
command: memcached -m 256M
|
command: memcached -m 256M
|
||||||
image: memcached:${MEMCACHE_VERSION}
|
image: memcached:1.6.10-alpine
|
||||||
restart: ${RESTART}
|
restart: ${RESTART}
|
||||||
|
|
||||||
zammad-nginx:
|
zammad-nginx:
|
||||||
@ -54,18 +53,16 @@ services:
|
|||||||
- "8080"
|
- "8080"
|
||||||
depends_on:
|
depends_on:
|
||||||
- zammad-railsserver
|
- zammad-railsserver
|
||||||
image: ${IMAGE_REPO}:${VERSION}
|
image: ${IMAGE_REPO}:zammad${VERSION}
|
||||||
restart: ${RESTART}
|
restart: ${RESTART}
|
||||||
volumes:
|
volumes:
|
||||||
- zammad-config-nginx:/etc/nginx/sites-enabled:ro
|
- zammad-data:/opt/zammad
|
||||||
- zammad-var:/opt/zammad/var:ro
|
|
||||||
|
|
||||||
zammad-postgresql:
|
zammad-postgresql:
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_DB=${POSTGRES_DB}
|
|
||||||
- POSTGRES_USER=${POSTGRES_USER}
|
- POSTGRES_USER=${POSTGRES_USER}
|
||||||
- POSTGRES_PASSWORD=${POSTGRES_PASS}
|
- POSTGRES_PASSWORD=${POSTGRES_PASS}
|
||||||
image: postgres:${POSTGRES_VERSION}
|
image: ${IMAGE_REPO}:zammad-postgresql${VERSION}
|
||||||
restart: ${RESTART}
|
restart: ${RESTART}
|
||||||
volumes:
|
volumes:
|
||||||
- postgresql-data:/var/lib/postgresql/data
|
- postgresql-data:/var/lib/postgresql/data
|
||||||
@ -79,16 +76,14 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- MEMCACHE_SERVERS=${MEMCACHE_SERVERS}
|
- MEMCACHE_SERVERS=${MEMCACHE_SERVERS}
|
||||||
- REDIS_URL=${REDIS_URL}
|
- REDIS_URL=${REDIS_URL}
|
||||||
image: ${IMAGE_REPO}:${VERSION}
|
image: ${IMAGE_REPO}:zammad${VERSION}
|
||||||
restart: ${RESTART}
|
restart: ${RESTART}
|
||||||
volumes:
|
volumes:
|
||||||
- zammad-var:/opt/zammad/var
|
- zammad-data:/opt/zammad
|
||||||
|
|
||||||
zammad-redis:
|
zammad-redis:
|
||||||
image: redis:${REDIS_VERSION}
|
image: redis:6.2.5-alpine
|
||||||
restart: ${RESTART}
|
restart: ${RESTART}
|
||||||
volumes:
|
|
||||||
- redis-data:/data
|
|
||||||
|
|
||||||
zammad-scheduler:
|
zammad-scheduler:
|
||||||
command: ["zammad-scheduler"]
|
command: ["zammad-scheduler"]
|
||||||
@ -99,10 +94,10 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- MEMCACHE_SERVERS=${MEMCACHE_SERVERS}
|
- MEMCACHE_SERVERS=${MEMCACHE_SERVERS}
|
||||||
- REDIS_URL=${REDIS_URL}
|
- REDIS_URL=${REDIS_URL}
|
||||||
image: ${IMAGE_REPO}:${VERSION}
|
image: ${IMAGE_REPO}:zammad${VERSION}
|
||||||
restart: ${RESTART}
|
restart: ${RESTART}
|
||||||
volumes:
|
volumes:
|
||||||
- zammad-var:/opt/zammad/var
|
- zammad-data:/opt/zammad
|
||||||
|
|
||||||
zammad-websocket:
|
zammad-websocket:
|
||||||
command: ["zammad-websocket"]
|
command: ["zammad-websocket"]
|
||||||
@ -113,21 +108,17 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- MEMCACHE_SERVERS=${MEMCACHE_SERVERS}
|
- MEMCACHE_SERVERS=${MEMCACHE_SERVERS}
|
||||||
- REDIS_URL=${REDIS_URL}
|
- REDIS_URL=${REDIS_URL}
|
||||||
image: ${IMAGE_REPO}:${VERSION}
|
image: ${IMAGE_REPO}:zammad${VERSION}
|
||||||
restart: ${RESTART}
|
restart: ${RESTART}
|
||||||
volumes:
|
volumes:
|
||||||
- zammad-var:/opt/zammad/var
|
- zammad-data:/opt/zammad
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
elasticsearch-data:
|
elasticsearch-data:
|
||||||
driver: local
|
driver: local
|
||||||
postgresql-data:
|
postgresql-data:
|
||||||
driver: local
|
driver: local
|
||||||
redis-data:
|
|
||||||
driver: local
|
|
||||||
zammad-backup:
|
zammad-backup:
|
||||||
driver: local
|
driver: local
|
||||||
zammad-config-nginx:
|
zammad-data:
|
||||||
driver: local
|
|
||||||
zammad-var:
|
|
||||||
driver: local
|
driver: local
|
||||||
|
Loading…
Reference in New Issue
Block a user