
Redmine Docker compose
Here is ready-made Docker compose file to install Redmine in a multi-container project using Redmine, MySQL and Nginx containers. It uses volumes to save MySQL data and Redmine file if you want to migrate away or clone the project.
# Installs and setup Redmine using Redmine contianer
# MySQL container for database
# Nginx container for serving
services:
redmine-mysql:
image: mysql:8.4.7
restart: always
environment:
MYSQL_USER: redmine
MYSQL_PASSWORD: wBtLHgP*l@qnz5En
MYSQL_DATABASE: redmine
# MYSQL_ROOT_PASSWORD: redmine
MYSQL_RANDOM_ROOT_PASSWORD: 1
volumes:
- .\data\mysql:/var/lib/mysql
redmine:
image: redmine:6.1.0
restart: always
ports:
- "3000:3000"
environment:
REDMINE_DB_MYSQL: redmine-mysql
REDMINE_DB_DATABASE: redmine
REDMINE_DB_USERNAME: redmine
REDMINE_DB_PASSWORD: wBtLHgP*l@qnz5En
volumes:
- ./data/redmine/files:/usr/src/redmine/files
- ./data/redmine/config/configuration.yml:/usr/src/redmine/config/configuration.yml
depends_on:
- redmine-mysql
nginx:
image: nginx:1.29
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./data/nginx/conf:/etc/nginx/conf.d:ro
- ./data/nginx/ssl:/etc/nginx/ssl:ro
depends_on:
- redmine Nginx .conf file
Nginx configuration file to setup, serve and secure the Redmine install with SSL certificates.
server {
listen 80;
listen [::]:80;
server_name redmine.your-domain.com;
# Redirect all HTTP traffic permanently (301) to the HTTPS version
return 301 https://$host$request_uri;
error_log /etc/nginx/conf.d/log/redmine.log;
}
server {
listen 443 ssl;
server_name redmine.your-domain.com;
ssl_certificate /etc/nginx/ssl/certificate.pem; # Your Origin Certificate
ssl_certificate_key /etc/nginx/ssl/private.key; # Your Private Key
# Standard SSL settings (improves security)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers off;
location / {
proxy_pass http://redmine:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
#access_log /var/log/nginx/host.access.log main;
error_log /etc/nginx/conf.d/log/redmine.log;
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}Redmine email setup
Redmine email setup with google workspace
email_delivery:
delivery_method: :smtp
smtp_settings:
enable_starttls_auto: true
address: "smtp.gmail.com"
port: 587
domain: "your-domain.com" # 'your.domain.com' for GoogleApps
authentication: :plain
user_name: "[email protected]"
password: "your-google-app-password"
To learn how it’s all working read the detailed guide on How to Install Redmine with Docker Containers . In this guide you will also learn how to secure your install using Cloudflare’s free SSL-Certificates.