La instalación de Redmine suele ser medio un dolor de cabeza si no estas en el palo de Ruby.
No quise sufrir está vez y lo levante desde un container de Docker especificamente de Redmine.
Basándome en la documentación del link anterior, mejore algunas configuraciones para extraer los datos que maneja el sistema de adentro del contenedor (no esta bueno dejar datos que uno quiere persistir dentro del contenedor).
¿Como lo instale?
Primero necesito levantar una base de datos:
1 |
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234567890 -e MYSQL_DATABASE=redmine -v /usr/src/redmine/mysql:/var/lib/mysql mysql |
¿Que tiene diferente el comando con el del tutorial original?
- Saco el directorio /var/lib/mysql para persistirlo si borro el contenedor.
- Público el puerto 3066 para poder conectarme desde afuera de los contenedores al MySQL.
Sobre este ultimo bullet, es necesario hacer un cambio para poder conectarse desde afuera:
1 2 |
docker exec -it redmine bash mysql -u root |
Accedo al contenedor, abro el cliente MySQL local y ejecuto el siguiente comando:
1 |
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234567890'; |
En nuestro caso teníamos una base vieja, por lo que cargue el backup dentro del MySQL antes de arrancar el contenedor de Redmine para que en lugar de crear una base nueva, intente migrarla, no voy a explicar el como, supongo que lo saben hacer.
Sigo con la instalación levantando el contenedor de Docker.
1 |
docker run -d --name redmine -v /usr/src/redmine/config/configuration.yml:/usr/src/redmine/config/configuration.yml -v /usr/src/redmine/config/initializers/saml.rb:/usr/src/redmine/config/initializers/saml.rb -v /usr/src/redmine/files:/usr/src/redmine/files -v /usr/src/redmine/plugins:/usr/src/redmine/plugins -v /etc/localtime:/etc/localtime:ro -p 3000:3000 --link mysql:mysql redmine:latest |
¿Que tiene diferente el comando con el del tutorial original?
- Cargo la configuración desde afuera /usr/src/redmine/config/configuration.yml
- Utilizamos SAML, por lo que cargo una configuración especifica /usr/src/redmine/config/initializers/saml.rb
- Extraigo el directorio plugins por fuera del container, para poder persitir
- Extraigo el directorio files por fuera del container, para poder persitir
- Público el puerto 3000 para poder conectarme desde afuera.
Luego con un apache en modo proxy, transformo el puerto 80 en 3000. (Ahora que lo pienso podría no ser necesario ya que con el mismo Docker lo puedo transformar de 3000 a 80)
¿Como actualizar?
Los pasos básicamente son:
- Actualizo la imagen
- Paro el contenedor
- Borro el contenedor
- Creo nuevamente el contenedor (pero está vez lo hace con la imagen nueva)
La versión en comandos es:
1 2 3 4 |
docker pull redmine docker stop redmine docker rm redmine docker run -d --name redmine -v /usr/src/redmine/config/configuration.yml:/usr/src/redmine/config/configuration.yml -v /usr/src/redmine/config/initializers/saml.rb:/usr/src/redmine/config/initializers/saml.rb -v /usr/src/redmine/files:/usr/src/redmine/files -v /usr/src/redmine/plugins:/usr/src/redmine/plugins -v /etc/localtime:/etc/localtime:ro -p 3000:3000 --link mysql:mysql redmine:latest |
¿Si está caído?
Proba si realmente está caído.
1 |
docker stats |
Y si lo está:
1 |
docker start redmine |
¿Y si quiero ver algo dentro del docker?
1 |
docker exec -it redmine bash |
Con esto nos da una consola bash dentro del container