Construindo a imagem sem tocar no banco de dados

Eu queria fazer o mesmo que você — nós rodamos o Discourse no Amazon ECS, então precisávamos ser capazes de construir apenas a imagem da web e enviá-la para um registro. Não quis mexer no processo de build do Discourse porque queremos manter o máximo possível da instalação suportada.

Em vez disso, usamos o script launcher normal para construir uma configuração de dois contêineres em uma máquina local, mas ignoramos o contêiner de dados e enviamos o contêiner da web para o registro. Em tempo de execução, sobrescrevemos os detalhes de conexão do Postgres e do Redis por meio de variáveis de ambiente.

A implantação da nova imagem é um processo de 3 etapas:

  1. Execute as pré-migrações seguras. Faça o ECS executar este comando (com a nova imagem):

     SKIP_POST_DEPLOYMENT_MIGRATIONS=1 rake db:migrate
    
  2. Implante a nova imagem. Atualize o serviço do ECS.

  3. Execute as pós-migrações. Faça o ECS executar este comando:

     SKIP_POST_DEPLOYMENT_MIGRATIONS=0 rake db:migrate
    

Ter um contêiner de dados local rodando enquanto construímos a imagem provavelmente é desperdício, mas isso significa que podemos usar o web.template.yml padrão sem nos preocupar com quais partes tentam se comunicar com o banco de dados ou o Redis.

8 curtidas