docker-redmine icon indicating copy to clipboard operation
docker-redmine copied to clipboard

Release: 5.x

Open frank-dspeed opened this issue 6 years ago • 16 comments

Goals

turn this into a docker app that you can run it makes no sense anymore to integrate the components into a single container. we should only supply a sidecar container that does the config.

Changelog

  • nginx got deprecated (use external image)
  • based on redmine from docker library
  • all configuration options from this and library work
  • Change Quickstart example to start extra nginx
  • give ssl example.

Closes:

  • #301
  • #291
  • #283
  • #268
  • #168 Passanger Support
  • #147 Cors header

TODO

  • supply nginx.conf via mount point -> /etc/nginx/sites-enabled/redmine.conf
  • give instructions for ssl
  • adjust env vars for compat
  • redmine_without_nginx -> branch -> merge master

3.4.3 Features

  • backward compatible env names
  • extends the library redmine image
  • Adds mail configuration via environment variables.
  • Adds some helper scripts to work with dockerized redmine

frank-dspeed avatar Oct 27 '17 20:10 frank-dspeed

nginx got deprecated (use external image)

What do you mean here? Are you removing NGINX from the image entirely? If yes, this will break the image for existing users who depend on the SSL support provided by the image and we should have clear instructions so that existing users can migrate their existing deployments properly.

  • Franks Answer: Deprecated means that we will keep it in but will throw warnings and add infos how to use a external nginx with that image to have better handling of individual needs like ssl cors headers and other stuff like serving from a sub directory.

based on redmine from docker library

I see that you intend to move the image to use the official redmine image as a base. I really don't see any advantage of doing so and also see a lot of effort from you to migrate the feature set of this image. There is no clear advantage of taking on this effort and there is no real advantage to the user.

I suggest you hold on to merging these changes and I'm sorry if i've missed any discussions on this matter. If you are really sold on the advantage of this migration, then my suggestion is to fork this image, make releases of the fork with these changes. Once any issues are ironed out and the new image is reasonably stable then I'd be happy to merge in the changes.

  • Franks Answer The library image is at present more stable then we are so it will be fine i will test it and will over time also add automatic tests it would help if you would go ahead with integration of travis so that we have automated quality tests

sameersbn avatar Oct 28 '17 15:10 sameersbn

@sameersbn there will be no diffrence the only diff between this image and the other one is that we have imap scripts and nginx + ssl then we have a lot of issues with nginx and ssl .

So to solve all that issues and keep this compatible we simply split nginx out but don't the settings i will supply a clear migration path.

Pro of this merge is:

  • Reducing Issues.
  • More logical Deployment via kubernetes and other normal Moby Stack tech

Cons

  • No none needed nginx instance

frank-dspeed avatar Oct 29 '17 19:10 frank-dspeed

@sameersbn befor i merge that in i will discusses that with you this issue is still in preparation but i think it will close near all open issues

frank-dspeed avatar Oct 29 '17 19:10 frank-dspeed

IMHO it would seem logical to base on the official image. It would at least simplify the version upgrades I guess.

Glideh avatar Nov 06 '17 13:11 Glideh

I'm no expert but these changes to structure sound ideal. Any updates on this?

Bodge-IT avatar Dec 20 '17 08:12 Bodge-IT

Sorry about not looking into this. I would like to get this PR well tested. Will try to spend some time to validate everything works as expected and users can upgrade without any issues.

It would be very helpful if you guys could help test this PR and validate it works for you. Thanks!

sameersbn avatar Dec 20 '17 12:12 sameersbn

Just noticed that the PR is WIP and there are a couple of TODO tasks in the pipeline. We could use help there as welll.

sameersbn avatar Dec 20 '17 12:12 sameersbn

@sameersbn yes we will try our best on that at present that is a lot of work and we could need repo access or your assistance for the setup of automated tests as your the repo owner that is blocking

frank-dspeed avatar Dec 20 '17 14:12 frank-dspeed

Notes for my Self for this week

  • Our Container will expose a Volume with its nginx config blocks
  • Finish Example Default Host domain mappings via docker volume
  • Finish Example 2 Default Host Config will Include the gitlab init block via /etc/nginx/vhost-enabled like path

  • SSL gets Injected via a Own Volume Also via a letsencrypt container that shares volumes
    • offers volume for include in Default Server Config via Domain Mapping
    • offers volume for sharing the certs
    • offers volume for config blocks included by Domain Mapping or a Server Rule

frank-dspeed avatar Jan 04 '18 10:01 frank-dspeed

Redmine-Version 3.4.4 was released yesterday.

bor8 avatar Jan 09 '18 17:01 bor8

http://www.redmine.org/news/116. Is there any plans to upgrade to 3.3.6 and 3.4.4 ?

goodmorning9527 avatar Jan 11 '18 03:01 goodmorning9527

frank has been working on a rework of the docker image. In the meantime, if someone would be willing to create a pull request updating the installed version of redmine. I'd be willing to test it real quick and merge it in.

jcormier avatar Jan 11 '18 14:01 jcormier

Sorry, I couldn't wait, I used the official repo and made the following compose file work:

version: "3.1"

services:
  postgresql:
    image: postgres:10.1
    environment:
    - POSTGRES_USER=redmine
    - POSTGRES_PASSWORD=hallo
    - POSTGRES_DB=redmine_production
    restart: always
    volumes:
    - /opt/redmine/dump.sql:/docker-entrypoint-initdb.d/dump.sql
    - /opt/redmine/postgresql/data/:/var/lib/postgresql/data/

  redmine:
    image: redmine:3.4.4
    depends_on:
    - postgresql
    environment:
        REDMINE_DB_POSTGRES: postgresql
        REDMINE_DB_USERNAME: redmine
        REDMINE_DB_PASSWORD: hallo
        REDMINE_DB_DATABASE: redmine_production
    ports:
    - "10083:3000"
    restart: always
    volumes:
    - /opt/redmine/files:/usr/src/redmine/files/
    - /opt/redmine/plugins:/usr/src/redmine/plugins/
    - /opt/redmine/public/themes/circle/:/usr/src/redmine/public/themes/circle/

Please delete the file dump.sql after the first Docker Compose-run.

If you have any advantages with this repo here: please let us know. Thanks.

bor8 avatar Jan 11 '18 15:01 bor8

Created updates up through 3.2.9, 3.3.6, and 3.4.4

jcormier avatar Jan 12 '18 18:01 jcormier

I also could not wait and made the switch.

Here is what I think are the interesting part:

  • cron supported through http://deck-chores.readthedocs.io (here used for the redmine reminder plugin).
  • use of docker secrets.
  • SSL/HSTS supported through passenger/nginx and a rails initializer using config.force_ssl = true.
version: "3.1"
services:
  web:
    image: redmine:3.4-passenger
    restart: always
    command: passenger start --ssl --ssl-certificate /run/secrets/ssl-certificate --ssl-certificate-key /run/secrets/ssl-key --ssl-port 3443
    environment:
      REDMINE_DB_MYSQL_FILE: /run/secrets/database-hostname
      REDMINE_DB_DATABASE_FILE: /run/secrets/database-name
      REDMINE_DB_USERNAME_FILE: /run/secrets/database-username
      REDMINE_DB_PASSWORD_FILE: /run/secrets/database-password
      REDMINE_PLUGINS_MIGRATE: 1
    ports:
      - '80:3000'
      - '443:3443'
    depends_on:
      - database
    secrets:
      - source: redmine-configuration
        target: /usr/src/redmine/config/configuration.yml
      - ssl-certificate
      - ssl-key
      - database-hostname
      - database-username
      - database-password
      - database-name
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./data/files:/usr/src/redmine/files
      - ./initializers:/usr/src/redmine/config/initializers/customization
      - ./plugins:/usr/src/redmine/plugins
      - ./themes:/usr/src/redmine/public/themes
    labels:
      deck-chores.reminder-emails.command: 'rake redmine:reminder_plugin:send_notifications  >> log/due_date_reminder.log 2>&1'
      deck-chores.reminder-emails.interval: daily

  database:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/database-password
    secrets:
      - database-password
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./data/mysql:/var/lib/mysql

  officer:
    image: funkyfuture/deck-chores
    restart: always
    environment:
      TIMEZONE: Europe/Zurich
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock

secrets:
  redmine-configuration:
    file: ./data/secrets/redmine/configuration.yml
  ssl-certificate:
    file: ./data/secrets/ssl/redmine.pem
  ssl-key:
    file: ./data/secrets/ssl/redmine.key
  database-hostname:
    file: ./data/secrets/database/hostname
  database-username:
    file: ./data/secrets/database/username
  database-password:
    file: ./data/secrets/database/password
  database-name:
    file: ./data/secrets/database/name

Silex avatar May 08 '18 12:05 Silex

Will use https://docs.docker.com/develop/develop-images/multistage-build/ to archive our goal faster!

frank-dspeed avatar Dec 25 '18 20:12 frank-dspeed