Onde as migrações devem ser executadas no processo de implantação do elasticstalstalstalk?

2

Estou muito curioso para saber como as pessoas executam um comando como db migrate em seus aplicativos eb. Se você adicioná-lo como .ebextensions , temo que, quando você tiver várias instâncias para um aplicativo, pode haver conflitos que ocorrerão se vários servidores estiverem tentando executar a mesma migração.

Em que ponto durante o processo de implantação um comando db migrate deve ser executado?

    
por ThomasReggi 26.04.2016 / 17:52

2 respostas

3

Você pode tentar o sinalizador: leader_only em um arquivo de configuração ebextensions . Esse sinalizador fará sua migração ser executada apenas uma vez, mesmo se você tiver o aplicativo implantado em muitas instâncias. Por exemplo, salve esse arquivo no diretório raiz do seu projeto no caminho: /.ebextensions/migration.config

option_settings:
container_commands:
    database_migration:
        leader_only: true
        command: "db migrate"

Mais informações: Documentos oficiais do AWS Elastic Beanstalk

    
por 24.02.2017 / 19:41
0

Esta sequência funciona para mim, na implementação do Rails 5.1.4 para o Elastic Beanstalk usando o PostgreSQL:

  1. Implemente seu código no EB. Eu uso o console do EB, mas você pode usar o CLI.
  2. SSH para o servidor de aplicativos do EC2
  3. Altere para o diretório do aplicativo: cd / var / app / current /
  4. db: reset

BTW, eu precisava fechar o pgAdminIII que eu estava usando para examinar o banco de dados do RDS. Desde que eu estava conectado, isso bloqueia o banco de dados e impede a última etapa.

Eu também tinha RAILS_SKIP_MIGRATIONS definido como TRUE no console do EB (em Configuração > Software). Presumivelmente, se você deixasse isso em seu valor padrão de FALSE, a implementação executaria quaisquer migrações necessárias.

Então, em resposta à pergunta original, você executa o rails db: reset (ou rails db: migrate ) no servidor de aplicativos. Você não (e não pode) SSH para o servidor RDS.

    
por 17.08.2018 / 11:52