docker-redmine
docker-redmine copied to clipboard
Release: 5.x
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
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 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
@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
IMHO it would seem logical to base on the official image. It would at least simplify the version upgrades I guess.
I'm no expert but these changes to structure sound ideal. Any updates on this?
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!
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 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
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
Redmine-Version 3.4.4 was released yesterday.
http://www.redmine.org/news/116. Is there any plans to upgrade to 3.3.6 and 3.4.4 ?
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.
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.
Created updates up through 3.2.9, 3.3.6, and 3.4.4
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
Will use https://docs.docker.com/develop/develop-images/multistage-build/ to archive our goal faster!