diff --git a/.env b/.env index 7c6fdec..609f246 100644 --- a/.env +++ b/.env @@ -3,4 +3,4 @@ POSTGRES_PASS=zammad POSTGRES_USER=zammad RESTART=always # don't forget to add the minus before the version -VERSION=-4.0.0-25c \ No newline at end of file +VERSION=-4.1.0-6c diff --git a/Dockerfile b/Dockerfile index ea5d3d3..6d1a25b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,5 +8,5 @@ LABEL org.label-schema.build-date="$BUILD_DATE" \ org.label-schema.vcs-url="https://github.com/colpari/zammad" \ org.label-schema.vcs-type="Git" \ org.label-schema.vendor="colpari" \ - org.label-schema.schema-version="4.0.0" \ + org.label-schema.schema-version="4.1.0" \ org.label-schema.docker.cmd="sysctl -w vm.max_map_count=262144;docker-compose up" diff --git a/README.md b/README.md index 2814831..2c7542b 100644 --- a/README.md +++ b/README.md @@ -23,10 +23,10 @@ This repo is meant to be the starting point for somebody who likes to use docker 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 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` 2. Modify the environment variable `VIRTUAL_HOST` and the name of the external network in `./docker-compose.prod.yml` to fit your environment. -3. Run docker-composer commands with the default and your configuration, e.g. `docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d` +3. Run docker-composer commands with the default and your configuration, e.g. `docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d` See `.examples/proxy/docker-compose.yml` for an example proxy project. @@ -50,14 +50,13 @@ Elasticsearch is enabled by default in the example `docker-compose.yml` file. It 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. -Do the following to empty the ES docker volume: +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 -set -o pipefail DOCKER_VOLUME="$(docker volume inspect zammaddockercompose_elasticsearch-data | grep Mountpoint | sed -e 's#.*": "##g' -e 's#",##')/*" -echo "${DOCKER_VOLUME}" #check this is a valid docker volume path! if not do not proceed or you might lose data! -rm -r $(docker volume inspect zammaddockercompose_elasticsearch-data | grep Mountpoint | sed -e 's#.*": "##g' -e 's#",##')/* -docker-compose start +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: diff --git a/containers/zammad-elasticsearch/Dockerfile b/containers/zammad-elasticsearch/Dockerfile index 6292169..ad8e891 100644 --- a/containers/zammad-elasticsearch/Dockerfile +++ b/containers/zammad-elasticsearch/Dockerfile @@ -9,7 +9,7 @@ LABEL org.label-schema.build-date="$BUILD_DATE" \ org.label-schema.vcs-url="https://github.com/colpari/zammad" \ org.label-schema.vcs-type="Git" \ org.label-schema.vendor="colpari" \ - org.label-schema.schema-version="4.0.0" \ + org.label-schema.schema-version="4.1.0" \ org.label-schema.docker.cmd="sysctl -w vm.max_map_count=262144;docker-compose up" SHELL ["/bin/bash", "-e", "-o", "pipefail", "-c"] diff --git a/containers/zammad-postgresql/Dockerfile b/containers/zammad-postgresql/Dockerfile index 3e75d51..b268f14 100644 --- a/containers/zammad-postgresql/Dockerfile +++ b/containers/zammad-postgresql/Dockerfile @@ -10,7 +10,7 @@ LABEL org.label-schema.build-date="$BUILD_DATE" \ org.label-schema.vcs-url="https://github.com/colpari/zammad" \ org.label-schema.vcs-type="Git" \ org.label-schema.vendor="colpari" \ - org.label-schema.schema-version="4.0.0" \ + org.label-schema.schema-version="4.1.0" \ org.label-schema.docker.cmd="sysctl -w vm.max_map_count=262144;docker-compose up" SHELL ["/bin/bash", "-e", "-o", "pipefail", "-c"] diff --git a/containers/zammad/Dockerfile b/containers/zammad/Dockerfile index ec3cc48..4a9b6d4 100644 --- a/containers/zammad/Dockerfile +++ b/containers/zammad/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:2.6.6-slim AS builder +FROM ruby:2.6.8-slim AS builder # note: zammad is currently incompatible to alpine because of: # https://github.com/docker-library/ruby/issues/113 @@ -24,7 +24,7 @@ RUN chmod +x /tmp/setup.sh; \ /tmp/setup.sh builder -FROM ruby:2.6.6-slim +FROM ruby:2.6.8-slim ARG BUILD_DATE ARG DEBIAN_FRONTEND=noninteractive @@ -37,7 +37,7 @@ LABEL org.label-schema.build-date="$BUILD_DATE" \ org.label-schema.vcs-url="https://github.com/colpari/zammad" \ org.label-schema.vcs-type="Git" \ org.label-schema.vendor="colpari" \ - org.label-schema.schema-version="4.0.0" \ + org.label-schema.schema-version="4.1.0" \ org.label-schema.docker.cmd="sysctl -w vm.max_map_count=262144;docker-compose up" ENV GIT_BRANCH colpari-develop diff --git a/containers/zammad/docker-entrypoint.sh b/containers/zammad/docker-entrypoint.sh index 2c0e850..619cbd1 100755 --- a/containers/zammad/docker-entrypoint.sh +++ b/containers/zammad/docker-entrypoint.sh @@ -27,6 +27,7 @@ set -e : "${ZAMMAD_RAILSSERVER_PORT:=3000}" : "${ZAMMAD_WEBSOCKET_HOST:=zammad-websocket}" : "${ZAMMAD_WEBSOCKET_PORT:=6042}" +: "${ZAMMAD_WEB_CONCURRENCY:=0}" function check_zammad_ready { sleep 15 @@ -53,7 +54,9 @@ if [ "$1" = 'zammad-init' ]; then cd "${ZAMMAD_DIR}" # configure database - 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: ${POSTGRESQL_PASS}\\n host: ${POSTGRESQL_HOST}\\n port: ${POSTGRESQL_PORT}#g" < contrib/packager.io/database.yml.pkgr > config/database.yml + # 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 memcache sed -i -e "s/.*config.cache_store.*file_store.*cache_file_store.*/ config.cache_store = :dalli_store, '${MEMCACHED_HOST}:${MEMCACHED_PORT}'\\n config.session_store = :dalli_store, '${MEMCACHED_HOST}:${MEMCACHED_PORT}'/" config/application.rb @@ -142,10 +145,10 @@ if [ "$1" = 'zammad-railsserver' ]; then cd "${ZAMMAD_DIR}" - echo "starting railsserver..." + echo "starting railsserver... with WEB_CONCURRENCY=${ZAMMAD_WEB_CONCURRENCY}" #shellcheck disable=SC2101 - exec bundle exec rails server puma -b [::] -p "${ZAMMAD_RAILSSERVER_PORT}" -e "${RAILS_ENV}" + exec bundle exec puma -b tcp://[::]:"${ZAMMAD_RAILSSERVER_PORT}" -w "${ZAMMAD_WEB_CONCURRENCY}" -e "${RAILS_ENV}" fi