Using docker-compose for redmine

What is docker-compose

Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose, see the list of featuresarrow-up-right. More details could be found herearrow-up-right.

What is Redmine

Redmine is a free and open source, web-based project management and issue tracking tool. It allows users to manage multiple projects and associated subprojects. It features per project wikis and forums, time tracking, and flexible role based access control. It includes a calendar and Gantt charts to aid visual representation of projects and their deadlines. Redmine integrates with various version control systems and includes a repository browser and diff viewer.

wikipedia.org/wiki/Redminearrow-up-right

logo

Why use docker-compose for Redmine

Redmine has two components, one is database service and another one is Redmine web service. Those two components are tightly tied together, so it would be better to specify them in a single YAML file and use one single command to start the entire Redmine service.

Getting started

  • Prepare the YAML file named docker-compose.yaml .

circle-info
  • We have two services defined in docker-compose.yaml. One named redmine, another one named redmine-db.

  • restart: always - Always restart the service if it dies.

  • volumes - Mount the container directory to host for data persistence.

  • environment - The required environment variables which are required to start the redmine and database services. Refer to redmine docker hub arrow-up-rightfor more details.

    • Note that the passing password in as environment variable as plain text is very ugly. Redmine supports REDMINE_DB_PASSWORD_FILE, and need further research on how to pass in secret to postgres. I am just using the plain text for a demo in this article.

Refer to official compose file docarrow-up-right for more details on each properties.

  • Once you have the docker-compose.yaml file ready, you could just run docker-compose up -d to bring up those services. -d means detached mode.

  • docker-compose ps to check the status.

  • Now you would be able to access the redmine from localhost:3000 . According to the Redmine docarrow-up-right, the default username and password are admin/admin

Backup and Restoration the Redmine

Backup

Redmine backups should include:

  • Database

  • Attachments (stored in the files directory under the installation directory by default)

For attachments, we have the attachments folder mounted on host, so we could easily backup the attachments under files directory.

For database(PostgreSQL in our example), the following commands need to be executed:

You can find <username>, <hostname>, and <redmine_database> in the file config/database.yml. <hostname> may not be required depending on your installation of the database. The pg_dumpcommand will prompt you to enter the password when necessary.

circle-info

The reason to use --file=/root/redmine.sqlc is because /root has been mounted on host, so it could easily be persistent if container restarts

Restoration

For attachments, you do not need to do anything specific since those files have been mounted on host. If container restarts, they will be re-mounted into container.

For database, the following commands need to be executed:

More backup and restoration details could be found herearrow-up-right

Online help

Last updated

Was this helpful?