Construyendo la imagen sin tocar la base de datos

Quería hacer lo mismo que tú: ejecutamos Discourse en Amazon ECS, por lo que necesitábamos poder construir solo la imagen web y enviarla a un registro. No me apetecía modificar el proceso de compilación de Discourse porque queremos mantenernos lo más cerca posible de la instalación oficial.

En su lugar, usamos el script launcher normal para construir una configuración de dos contenedores en una máquina local, pero ignoramos el contenedor de datos y enviamos el contenedor web al registro. En tiempo de ejecución, sobrescribimos los detalles de conexión de Postgres y Redis mediante variables de entorno.

Desplegar la nueva imagen es un proceso de 3 pasos:

  1. Ejecutar las migraciones previas seguras. Hacer que ECS ejecute este comando (con la nueva imagen):

     SKIP_POST_DEPLOYMENT_MIGRATIONS=1 rake db:migrate
    
  2. Desplegar la nueva imagen. Actualizar el servicio de ECS.

  3. Ejecutar las migraciones posteriores. Hacer que ECS ejecute este comando:

     SKIP_POST_DEPLOYMENT_MIGRATIONS=0 rake db:migrate
    

Tener un contenedor de datos local ejecutándose mientras construimos la imagen probablemente sea un desperdicio, pero nos permite usar el archivo web.template.yml estándar sin preocuparnos por qué partes intentan comunicarse con la base de datos o Redis.

8 Me gusta