From 34b670b4c9d72d60b48c45947f1ffe2669253d93 Mon Sep 17 00:00:00 2001 From: "Abinoam Praxedes Marques Jr." Date: Mon, 11 Nov 2024 19:31:40 -0300 Subject: [PATCH 1/6] Update Makefile so it generates ssl certs automatically --- Makefile | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 1beed9a3..81cd7b32 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,9 @@ IMAGE:=sameersbn/redmine +CERTS_DIR=certs +CERT_FILES=$(CERTS_DIR)/redmine.crt $(CERTS_DIR)/dhparam.pem + +.PHONY: test-release generate-certs clean + all: build help: @@ -14,15 +19,36 @@ help: build: @docker build --tag=$(IMAGE) . -test-release: + +test-release: generate-certs @echo Clean old run sudo rm -rf /srv/docker/redmine/ sudo mkdir -p /srv/docker/redmine/redmine - sudo cp -rf certs /srv/docker/redmine/redmine/ + sudo cp -rf $(CERTS_DIR) /srv/docker/redmine/redmine/ docker compose down docker compose build docker compose up +generate-certs: $(CERT_FILES) + +$(CERTS_DIR): + mkdir -p $(CERTS_DIR) + +$(CERTS_DIR)/redmine.key: | $(CERTS_DIR) + openssl genrsa -out $(CERTS_DIR)/redmine.key 2048 + +$(CERTS_DIR)/redmine.csr: $(CERTS_DIR)/redmine.key + openssl req -new -key $(CERTS_DIR)/redmine.key -out $(CERTS_DIR)/redmine.csr + +$(CERTS_DIR)/redmine.crt: $(CERTS_DIR)/redmine.csr $(CERTS_DIR)/redmine.key + openssl x509 -req -days 365 -in $(CERTS_DIR)/redmine.csr -signkey $(CERTS_DIR)/redmine.key -out $(CERTS_DIR)/redmine.crt + +$(CERTS_DIR)/dhparam.pem: | $(CERTS_DIR) + openssl dhparam -out $(CERTS_DIR)/dhparam.pem 2048 + +clean: + rm -rf $(CERTS_DIR) + release: ./make_release.sh @echo "Open https://github.com/sameersbn/docker-redmine/releases and Draft new release" From b8c15b6d2622be9e39b362bd68312486ae87e6d6 Mon Sep 17 00:00:00 2001 From: "Abinoam Praxedes Marques Jr." Date: Tue, 12 Nov 2024 17:42:50 -0300 Subject: [PATCH 2/6] Update README.md to reflect changes in make test-release --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d5f5b065..6330e7bf 100644 --- a/README.md +++ b/README.md @@ -1005,6 +1005,8 @@ sed -i 's/5.1.3/5.1.4/g' VERSION README.md docker-compose-memcached.yml docker-c vim Changelog.md # Update change log make test-release # Runs the following # sudo rm -rf /srv/docker/redmine/ # Clean old run +# sudo mkdir -p /srv/docker/redmine/redmine +# sudo cp -rf $(CERTS_DIR) /srv/docker/redmine/redmine/ # Copy generated certificates # docker compose down # docker compose build # docker compose up # Test new build From 7420296d98db3af17645c3549b2c762160856b1d Mon Sep 17 00:00:00 2001 From: "Abinoam Praxedes Marques Jr." Date: Tue, 12 Nov 2024 17:29:44 -0300 Subject: [PATCH 3/6] Update MySQL to 8.0 --- docker-compose-mysql.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/docker-compose-mysql.yml b/docker-compose-mysql.yml index 0f3c8468..84331153 100644 --- a/docker-compose-mysql.yml +++ b/docker-compose-mysql.yml @@ -1,12 +1,11 @@ services: mysql: - image: sameersbn/mysql:5.7.22-1 + image: mysql:8.0-bookworm environment: - - DB_USER=redmine - - DB_PASS=password - - DB_NAME=redmine_production - - MYSQL_CHARSET=utf8mb4 - - MYSQL_COLLATION=utf8mb4_unicode_ci + - MYSQL_USER=redmine + - MYSQL_PASSWORD=password + - MYSQL_DATABASE=redmine_production + - MYSQL_RANDOM_ROOT_PASSWORD=yes volumes: - /srv/docker/redmine/mysql:/var/lib/mysql # https://www.redmine.org/projects/redmine/wiki/MySQL_configuration From 884ae2c684c8859c933f812d2ea1d9f9e3ad39ac Mon Sep 17 00:00:00 2001 From: "Abinoam Praxedes Marques Jr." Date: Tue, 12 Nov 2024 20:09:42 -0300 Subject: [PATCH 4/6] Fix 'mbind: Operation not permitted' (MySQL 8) See: https://stackoverflow.com/a/55706057 --- docker-compose-mysql.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose-mysql.yml b/docker-compose-mysql.yml index 84331153..4186526a 100644 --- a/docker-compose-mysql.yml +++ b/docker-compose-mysql.yml @@ -10,6 +10,8 @@ services: - /srv/docker/redmine/mysql:/var/lib/mysql # https://www.redmine.org/projects/redmine/wiki/MySQL_configuration command: --transaction-isolation=READ-COMMITTED + cap_add: + - SYS_NICE # CAP_SYS_NICE redmine: build: ./ From 6a773b0da93f0492e835d55d29902a5f12aec7e9 Mon Sep 17 00:00:00 2001 From: Jonathan Cormier Date: Tue, 12 Nov 2024 19:55:15 -0300 Subject: [PATCH 5/6] Update themes location dir for Redmine 6.0.1 --- assets/runtime/functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/runtime/functions b/assets/runtime/functions index fff89c2b..ebe5fa33 100644 --- a/assets/runtime/functions +++ b/assets/runtime/functions @@ -1128,7 +1128,7 @@ install_plugins() { install_themes() { if [[ -d ${REDMINE_THEMES_DIR} ]]; then echo "Installing themes..." - rsync -avq --chown=${REDMINE_USER}:${REDMINE_USER} ${REDMINE_THEMES_DIR}/ ${REDMINE_INSTALL_DIR}/public/themes/ + rsync -avq --chown=${REDMINE_USER}:${REDMINE_USER} ${REDMINE_THEMES_DIR}/ ${REDMINE_INSTALL_DIR}/themes/ fi } From 4460201e5d26df7b84be9762cacb47b48f41ef45 Mon Sep 17 00:00:00 2001 From: "Abinoam Praxedes Marques Jr." Date: Tue, 12 Nov 2024 17:49:08 -0300 Subject: [PATCH 6/6] release: 6.0.1 Signed-off-by: Abinoam Praxedes Marques Jr. --- Changelog.md | 4 +++ Dockerfile | 2 +- README.md | 56 ++++++++++++++++++------------------ VERSION | 2 +- docker-compose-mariadb.yml | 2 +- docker-compose-memcached.yml | 2 +- docker-compose-mysql.yml | 2 +- docker-compose-sqlite3.yml | 2 +- docker-compose-ssl.yml | 2 +- docker-compose.yml | 2 +- 10 files changed, 40 insertions(+), 36 deletions(-) diff --git a/Changelog.md b/Changelog.md index 39b1a9ee..468a7d9f 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,9 @@ # Changelog +**6.0.1** +- redmine: upgrade to v6.0.1 +- `make test-release` now creates certificates for ssl + **5.1.4** - redmine: upgrade to v5.1.4 diff --git a/Dockerfile b/Dockerfile index e57b2b01..de2cfe63 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM ruby:3.2-slim-bookworm LABEL maintainer="sameer@damagehead.com" ENV RUBY_VERSION=3.2 \ - REDMINE_VERSION=5.1.4 \ + REDMINE_VERSION=6.0.1 \ REDMINE_USER="redmine" \ REDMINE_HOME="/home/redmine" \ REDMINE_LOG_DIR="/var/log/redmine" \ diff --git a/README.md b/README.md index 6330e7bf..ce23ae00 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Dockerfile to build a [Redmine](http://www.redmine.org/) container image. ## Version -Current Version: **sameersbn/redmine:5.1.4** +Current Version: **sameersbn/redmine:6.0.1** _P.S.: If your installation depends on various third party plugins, please stick with 2.6.xx series to avoid breakage._ @@ -108,7 +108,7 @@ docker pull sameersbn/redmine:latest Since version `2.4.2`, the image builds are being tagged. You can now pull a particular version of redmine by specifying the version number. For example, ```bash -docker pull sameersbn/redmine:5.1.4 +docker pull sameersbn/redmine:6.0.1 ``` Alternately you can build the image yourself. @@ -146,7 +146,7 @@ docker run --name=redmine -d \ --env='REDMINE_PORT=10083' \ --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` **NOTE**: Please allow a minute or two for the Redmine application to start. @@ -193,7 +193,7 @@ Volumes can be mounted in docker by specifying the **'-v'** option in the docker docker run --name=redmine -it --rm \ --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` ## Database @@ -244,7 +244,7 @@ docker run --name=redmine -it --rm \ --env='DB_USER=redmine' --env='DB_PASS=password' \ --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` This will initialize the redmine database and after a couple of minutes your redmine instance should be ready to use. @@ -290,7 +290,7 @@ We are now ready to start the redmine application. docker run --name=redmine -it --rm --link=mysql-redmine:mysql \ --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` Here the image will also automatically fetch the `DB_NAME`, `DB_USER` and `DB_PASS` variables from the mysql container as they are specified in the `docker run` command for the mysql container. This is made possible using the magic of docker links and works with the following images: @@ -321,7 +321,7 @@ docker run --name=redmine -it --rm \ --env='DB_USER=redmine' --env='DB_PASS=password' \ --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` This will initialize the redmine database and after a couple of minutes your redmine instance should be ready to use. @@ -367,7 +367,7 @@ We are now ready to start the redmine application. docker run --name=redmine -it --rm --link=postgresql-redmine:postgresql \ --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` Here the image will also automatically fetch the `DB_NAME`, `DB_USER` and `DB_PASS` variables from the postgresql container as they are specified in the `docker run` command for the postgresql container. This is made possible using the magic of docker links and works with the following images: @@ -390,7 +390,7 @@ _Assuming that the memcached server host is 192.168.1.100_ ```bash docker run --name=redmine -it --rm \ --env='MEMCACHE_HOST=192.168.1.100' --env='MEMCACHE_PORT=11211' \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` ### Linking to Memcached Container @@ -409,7 +409,7 @@ Now you can link memcached to the redmine image: ```bash docker run --name=redmine -it --rm --link=memcached-redmine:memcached \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` ### Mail @@ -423,7 +423,7 @@ docker run --name=redmine -it --rm \ --env='SMTP_USER=USER@gmail.com' --env='SMTP_PASS=PASSWORD' \ --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` If you are not using google mail, then please configure the SMTP host and port using the `SMTP_HOST` and `SMTP_PORT` configuration parameters. @@ -509,7 +509,7 @@ docker run --name=redmine -d \ --env='REDMINE_PORT=10445' --env='REDMINE_HTTPS=true' \ --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` In this configuration, any requests made over the plain http protocol will automatically be redirected to use the https protocol. However, this is not optimal when using a load balancer. @@ -528,7 +528,7 @@ docker run --name=redmine -d \ --env='NGINX_HSTS_MAXAGE=2592000' --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` If you want to completely disable HSTS set `NGINX_HSTS_ENABLED` to `false`. @@ -548,7 +548,7 @@ docker run --name=redmine -d --publish=10083:80 \ --env='REDMINE_HTTPS=true' \ --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` ### Deploy to a subdirectory (relative url root) @@ -562,7 +562,7 @@ docker run --name=redmine -d --publish=10083:80 \ --env='REDMINE_RELATIVE_URL_ROOT=/redmine' \ --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` Redmine will now be accessible at the `/redmine` path, e.g. `http://www.example.com/redmine`. @@ -593,7 +593,7 @@ Also the container processes seem to be executed as the host's user/group `1000` ```bash docker run --name=redmine -it --rm [options] \ --env="USERMAP_UID=500" --env="USERMAP_GID=500" \ - sameersbn/redmine:5.1.4 + sameersbn/redmine:6.0.1 ``` ### Available Configuration Parameters @@ -771,7 +771,7 @@ To uninstall plugins you need to first tell redmine about the plugin you need to docker run --name=redmine -it --rm \ --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 \ + sameersbn/redmine:6.0.1 \ app:rake redmine:plugins:migrate NAME=plugin_name VERSION=0 ``` @@ -789,7 +789,7 @@ For example, to remove the recurring tasks plugin: docker run --name=redmine -it --rm \ --volume=/srv/docker/redmine/redmine:/home/redmine/data \ --volume=/srv/docker/redmine/redmine-logs:/var/log/redmine/ \ - sameersbn/redmine:5.1.4 \ + sameersbn/redmine:6.0.1 \ app:rake redmine:plugins:migrate NAME=recurring_tasks VERSION=0 rm -rf /srv/docker/redmine/redmine/plugins/recurring_tasks ``` @@ -869,7 +869,7 @@ Relaunch the container with the `app:backup:create` argument. ```bash docker run --name redmine -it --rm [OPTIONS] \ - sameersbn/redmine:5.1.4 app:backup:create + sameersbn/redmine:6.0.1 app:backup:create ``` The backup will be created in the `backups/` folder of the [Data Store](#data-store). You can change the location using the `REDMINE_BACKUPS_DIR` configuration parameter. @@ -900,7 +900,7 @@ Relaunch the container with the `app:backup:restore` argument. Ensure you launch ```bash docker run --name redmine -it --rm [OPTIONS] \ - sameersbn/redmine:5.1.4 app:backup:restore + sameersbn/redmine:6.0.1 app:backup:restore ``` A list of existing backups will be displayed. Select a backup you wish to restore. @@ -909,7 +909,7 @@ To avoid this interaction you can specify the backup filename using the `BACKUP` ```bash docker run --name redmine -it --rm [OPTIONS] \ - sameersbn/redmine:5.1.4 app:backup:restore BACKUP=1417624827_redmine_backup.tar + sameersbn/redmine:6.0.1 app:backup:restore BACKUP=1417624827_redmine_backup.tar ``` ## Automated backups @@ -928,7 +928,7 @@ The `app:rake` command allows you to run redmine rake tasks. To run a rake task ```bash docker run --name=redmine -d [OPTIONS] \ - sameersbn/redmine:5.1.4 app:rake redmine:email:test[admin] + sameersbn/redmine:6.0.1 app:rake redmine:email:test[admin] ``` You can also use `docker exec` to run rake tasks on running redmine instance. For example, @@ -941,7 +941,7 @@ Similarly, to remove uploaded files left unattached ```bash docker run --name=redmine -d [OPTIONS] \ - sameersbn/redmine:5.1.4 app:rake redmine:attachments:prune + sameersbn/redmine:6.0.1 app:rake redmine:attachments:prune ``` Or, @@ -959,7 +959,7 @@ To upgrade to newer redmine releases, simply follow this 4 step upgrade procedur - **Step 1**: Update the docker image. ```bash -docker pull sameersbn/redmine:5.1.4 +docker pull sameersbn/redmine:6.0.1 ``` - **Step 2**: Stop and remove the currently running image @@ -981,7 +981,7 @@ Replace `x.x.x` with the version you are upgrading from. For example, if you are - **Step 4**: Start the image ```bash -docker run --name=redmine -d [OPTIONS] sameersbn/redmine:5.1.4 +docker run --name=redmine -d [OPTIONS] sameersbn/redmine:6.0.1 ``` When an upgrade is in progress the variable `REDMINE_WAS_UPDATED` will be defined and set to `yes`. This allows easy integration of individual upgrade-steps via `entrypoint.custom.sh`, `pre-install.sh`, and `post-install.sh`. @@ -998,10 +998,10 @@ docker exec -it redmine bash ## Upgrading to next redmine release -- Commands to run to update image to next redmine release, examples are from 5.0.4 to 5.1.4 +- Commands to run to update image to next redmine release, examples are from 6.0.1 to 6.0.2 ```bash -sed -i 's/5.1.3/5.1.4/g' VERSION README.md docker-compose-memcached.yml docker-compose-mysql.yml docker-compose-ssl.yml docker-compose-sqlite3.yml docker-compose-mariadb.yml Dockerfile docker-compose.yml +sed -i 's/6.0.1/6.0.1/g' VERSION README.md docker-compose-memcached.yml docker-compose-mysql.yml docker-compose-ssl.yml docker-compose-sqlite3.yml docker-compose-mariadb.yml Dockerfile docker-compose.yml vim Changelog.md # Update change log make test-release # Runs the following # sudo rm -rf /srv/docker/redmine/ # Clean old run @@ -1019,7 +1019,7 @@ make test-release # Runs the following ``` - Open https://github.com/sameersbn/docker-redmine/releases and Draft new release -- Select tag 5.1.4 and set release title to 5.1.4 +- Select tag 6.0.1 and set release title to 6.0.1 - Publish release - Check https://quay.io/repository/sameersbn/redmine?tab=info and https://hub.docker.com/r/sameersbn/redmine/builds for build progress diff --git a/VERSION b/VERSION index 76e9e619..5fe60723 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -5.1.4 +6.0.1 diff --git a/docker-compose-mariadb.yml b/docker-compose-mariadb.yml index e81d1cc4..9cae4280 100644 --- a/docker-compose-mariadb.yml +++ b/docker-compose-mariadb.yml @@ -20,7 +20,7 @@ services: redmine: build: ./ - image: sameersbn/redmine:5.1.4 + image: sameersbn/redmine:6.0.1 depends_on: - database environment: diff --git a/docker-compose-memcached.yml b/docker-compose-memcached.yml index f21054dc..fcd81265 100644 --- a/docker-compose-memcached.yml +++ b/docker-compose-memcached.yml @@ -16,7 +16,7 @@ services: redmine: build: ./ - image: sameersbn/redmine:5.1.4 + image: sameersbn/redmine:6.0.1 depends_on: - postgresql - memcached diff --git a/docker-compose-mysql.yml b/docker-compose-mysql.yml index 4186526a..4e1e7c4f 100644 --- a/docker-compose-mysql.yml +++ b/docker-compose-mysql.yml @@ -15,7 +15,7 @@ services: redmine: build: ./ - image: sameersbn/redmine:5.1.4 + image: sameersbn/redmine:6.0.1 depends_on: - mysql environment: diff --git a/docker-compose-sqlite3.yml b/docker-compose-sqlite3.yml index febb0913..d3928ac1 100644 --- a/docker-compose-sqlite3.yml +++ b/docker-compose-sqlite3.yml @@ -1,7 +1,7 @@ services: redmine: build: ./ - image: sameersbn/redmine:5.1.4 + image: sameersbn/redmine:6.0.1 environment: - TZ=Asia/Kolkata diff --git a/docker-compose-ssl.yml b/docker-compose-ssl.yml index 1afe544b..e6f65f0a 100644 --- a/docker-compose-ssl.yml +++ b/docker-compose-ssl.yml @@ -10,7 +10,7 @@ services: redmine: build: ./ - image: sameersbn/redmine:5.1.4 + image: sameersbn/redmine:6.0.1 depends_on: - postgresql environment: diff --git a/docker-compose.yml b/docker-compose.yml index 876f9cb9..30999e58 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,7 @@ services: start_period: 10s redmine: build: ./ - image: sameersbn/redmine:5.1.4 + image: sameersbn/redmine:6.0.1 depends_on: postgresql: condition: service_healthy