Utilidad para dockerizar en forma básica aplicaciones Rails y MySQL.
Ejecutar el script: instal.sh
Esto va a crear los Directorios
/opt/docker-compose-files/var/mysql-docker
En /opt/docker-compose-files se van copiar los archivos:
Dockerfiledocker-compose.yml
Y por último se va copiar docker-compose-init a:
/usr/local/bin/docker-compose-init
Parado sobre el root de la aplicación Rails que se quiera dockerizar, ejecutar:
$ docker-compose-initSe debe modificar el archivo docker-compose.yml en esta parte:
volumes:
- /var/mysql-docker/PROYECTO:/var/lib/mysqlY reemplazar PROYECTO por el nombre de la app (es el directorio donde el docker de MySQL guardará los archivos físicos de la base de datos)
Se debe modificar el archivo database.yml en dos partes.
Por un lado se debe reemplzar esto:
socket: /var/run/mysqld/mysqld.sockpor esto:
host: dbY la configuración del pass de la base de datos:
password: <%= ENV['DATABASE_PASSWORD'] %>docker-compose upFrenar CTRL+C y volver a ejecutar, la primera vez tiene que crear los archivos de base de datos.
Ejecutar migraciones:
docerk-compose run app bundle exec rake db:create db:migrate
La configuración de este docker-compose permite modificar el código de la aplicación mientras el docker está corriendo, eso se logra montando como volumen interno de la imagen el directorio que tiene el codigo:
volumes:
- .:/appPara usarlo como container, primero crear la imagen:
docker build -t app_name .y luego cambiar en el docker-compose.yml esto:
build: .por esto:
image: app_name:latestSi en algún momento aparece este error al ejecutar docker-compose up:
app_1 | A server is already running. Check /app/tmp/pids/server.pid.Se tiene que borrar el archivo en el directorio en el que estamos trabajando: /tmp/pids/server.pid
El problema es que un cierre forzado de la aplcación no se llegó a borrar el archivo que indica el pid.