Docker Compose
Atualize uma instalação feita com o projeto docker-compose
- Antes de atualizar
- Da 7.2 para a 7.3
- 1. Obtenha as novas imagens
- 2. Recrie os contentores
- 3. Verifique a atualização
- Reverter
O projeto docker-compose executa três contentores: MySQL (mysqldb), AnsibleForms (app) e o RTE que executa os playbooks (rte). O AnsibleForms e o RTE usam a tag de imagem 7, que aponta sempre para a versão 7.x mais recente. Uma atualização volta a obter as imagens e recria os contentores cuja imagem mudou. Tudo o que tem de persistir é guardado na pasta data e é preservado.
Antes de atualizar
Prepare a atualização para poder voltar atrás se algo correr mal:
- Faça uma cópia de segurança em Definições → Cópias de segurança. A nova versão atualiza o esquema da base de dados no primeiro arranque.
- Leia o registo de alterações das versões entre a sua e a nova.
- Vai passar para uma nova versão principal? Siga primeiro Atualizar para a v7.
- Vem da 6.5? O projeto 6.x, no seu ramo
v6, não tem contentorrte. Atualize a sua cópia do projeto para o ramomain, mantendo as suas definições do.enve a sua pastadata, para que odocker-compose.ymltenha o serviçorte. Esse ficheiro de compose defineCONFIG_SEED_PATH, e uma pastadatada 6.x não temseed.yaml: copiedata/seed.yamldo repositório e adicioneRTE_TOKEN(com pelo menos 16 caracteres) ao seu.env, como o.envdo repositório o tem. Sem eles a aplicação recusa-se a arrancar. As imagens da 7 correm com o uid 1000 em vez de root: dê a esse utilizador a pastadatauma vez, deixando os ficheiros do MySQL ao MySQL, comsudo find data -path data/mysql -prune -o -exec chown 1000:1000 {} +. A pastadata/sshpassa a ser montada em/home/node/.sshem vez de/root/.ssh. - Vem da 7.2? Atualize
docker-compose.ymledata/seed.yamlem conjunto: consulte primeiro Da 7.2 para a 7.3.
Da 7.2 para a 7.3
Até à 7.2.0 o serviço rte recebia as definições da base de dados e o seu runner, declarado em data/seed.yaml, corria em modo base de dados, descontinuado na 7.3.0 e removido na 8.0.0. Desde a 7.3.0 a aplicação liga-se ao RTE em http://rte:8000 e mantém um WebSocket aberto (RTE_MODE=inbound, consulte Modos), e o RTE não guarda definições da base de dados. Obtenha os dois ficheiros do ramo main do repositório, mantendo o seu .env:
| Ficheiro | O que muda |
|---|---|
docker-compose.yml | O serviço rte deixa de ler o .env: recebe RTE_MODE=inbound, RTE_TOKEN e RTE_FILES=local, e nenhum DB_* |
data/seed.yaml | Uma credencial de RTE rte, com url: http://rte:8000 e password: ${RTE_TOKEN}, e o runner rte com rte_mode: inbound e credential: rte |
Altere os dois. Só com o novo ficheiro de compose, o seed mantém o runner rte em modo base de dados: a aplicação chama o RTE como se fosse um da 7.2, ao que o novo RTE não responde, e nenhum playbook é executado. Um seed que alterou por si precisa da mesma credencial e do mesmo rte_mode.
Um runner que o seed criou continua gerido, só de leitura em Ligações → Runners, mesmo depois de remover CONFIG_SEED_PATH: só um seed aplicado liberta um runner que já não declara. Por isso mantenha o seed e defina aí o rte_mode, em vez de remover CONFIG_SEED_PATH para alterar o runner à mão.
O instalador faz isto sozinho: a sua atualização substitui docker-compose.yml, e data/seed.yaml quando é um fornecido pelo repositório, sem alterações. Um alterado à mão é mantido, e o novo é guardado ao lado.
1. Obtenha as novas imagens
Descarregue as imagens mais recentes das tags em docker-compose.yml:
cd /srv/apps/ansibleforms-docker
sudo docker compose pull
cd /srv/apps/ansibleforms-docker
sudo podman-compose pull
2. Recrie os contentores
Inicie novamente o projeto; os contentores cuja imagem mudou são recriados:
sudo docker compose up -d
sudo podman-compose down
sudo podman-compose up -d
3. Verifique a atualização
Acompanhe o registo do AnsibleForms enquanto arranca. O primeiro arranque de uma nova versão atualiza o esquema da base de dados, e o RTE arranca assim que o AnsibleForms estiver saudável:
sudo docker compose logs -f app
sudo podman-compose logs -f app
No AnsibleForms, Ajuda → Acerca de mostra a versão em execução, e Definições → Estado mostra a saúde da base de dados, do esquema e dos outros sistemas de que o AnsibleForms depende.
Reverter
Para voltar à versão que executava antes, a que Ajuda → Acerca de mostrava antes da atualização, fixe a sua tag exata em docker-compose.yml na imagem do AnsibleForms e na do RTE, em vez de 7, e execute novamente o passo 2. Se essa versão não arrancar na base de dados atualizada, restaure a cópia de segurança que fez em Definições → Cópias de segurança. Volte a colocar as tags em 7 para voltar a receber atualizações.