Docker
Atualize um contentor autónomo, sem docker-compose
- Antes de atualizar
- Da 7.2 para a 7.3
- 1. Obtenha as novas imagens
- 2. Substitua os contentores
- 3. Verifique a atualização
- Reverter
Uma instalação autónoma é atualizada substituindo os seus contentores: obtenha as novas imagens, remova os contentores antigos e inicie novos com os mesmos comandos run. Desde a versão 7 existem dois: o AnsibleForms e o RTE que executa os playbooks, sempre na mesma versão. Os seus ficheiros ficam guardados na pasta montada /app/dist/persistent e os seus dados no MySQL, por isso ambos são preservados.
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? As imagens da 7 correm com o uid 1000 em vez de root: dê a esse utilizador as pastas que monta, uma vez, por exemplo
sudo chown -R 1000:1000 /srv/apps/ansibleforms/persistent /srv/apps/ansibleforms/ssh. - Vem da 7.2? O RTE recebe um ficheiro próprio e a aplicação liga-se a ele: consulte primeiro Da 7.2 para a 7.3.
Da 7.2 para a 7.3
Até à 7.2.0 o RTE lia o ficheiro de ambiente da aplicação, com as definições da base de dados, e adicionava-se a si próprio como runner a partir de RTE_URL. Isso é o 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 e mantém um WebSocket aberto (RTE_MODE=inbound, consulte Modos), e o RTE não guarda definições da base de dados. Uma vez, antes do passo 2:
- Crie
/srv/apps/ansibleforms/rte.envcomo faz a instalação, comRTE_MODE=inbound, o mesmoRTE_TOKEN,RTE_FILES=local,PORT=8000eHTTPS=0. SemDB_*, semENCRYPTION_SECRET, semRTE_URL - Declare o runner nesse modo. Ou adicione o config seed da instalação,
persistent/seed.yamlcom a credencial de RTE (url: http://rte:8000,password: ${RTE_TOKEN}) e o runnerrte(rte_mode: inbound), e adicioneCONFIG_SEED_PATH=/app/dist/persistent/seed.yamlao ficheiro de ambiente da aplicação. Ou, sem seed, abra o runner em Ligações → Runners, defina o seu Modo como Entrada e escolha uma credencial de RTE que contenhahttp://rte:8000e o token
Com o seed, o ficheiro de ambiente da aplicação também contém RTE_TOKEN, o mesmo token, já que o seed o lê daí.
1. Obtenha as novas imagens
Descarregue as imagens mais recentes do AnsibleForms e do RTE da tag que executa:
docker pull ghcr.io/ansibleforms/ansibleforms:7
docker pull ghcr.io/ansibleforms/ansibleforms-rte-full:7
podman pull ghcr.io/ansibleforms/ansibleforms:7
podman pull ghcr.io/ansibleforms/ansibleforms-rte-full:7
2. Substitua os contentores
Remova os contentores antigos e inicie novos com os comandos run da instalação. A aplicação lê a ligação à base de dados do seu ficheiro de ambiente, com o utilizador de base de dados do AnsibleForms (não o root). O RTE lê o seu próprio rte.env, sem as definições da base de dados, e a aplicação liga-se a ele através de uma rede que os dois contentores partilham:
docker stop ansibleforms rte
docker rm ansibleforms rte
docker run -d --name ansibleforms --network ansibleforms -p 8000:8000 --restart unless-stopped \
--env-file /srv/apps/ansibleforms/ansibleforms.env \
-v /srv/apps/ansibleforms/persistent:/app/dist/persistent \
-v /srv/apps/ansibleforms/ssh:/home/node/.ssh \
ghcr.io/ansibleforms/ansibleforms:7
docker run -d --name rte --network ansibleforms --restart unless-stopped --stop-timeout 30 \
--env-file /srv/apps/ansibleforms/rte.env \
-v /srv/apps/ansibleforms/persistent:/app/dist/persistent \
-v /srv/apps/ansibleforms/ssh:/home/node/.ssh \
ghcr.io/ansibleforms/ansibleforms-rte-full:7
podman stop ansibleforms rte
podman rm ansibleforms rte
podman run -d --name ansibleforms --network ansibleforms -p 8000:8000 --restart unless-stopped \
--env-file /srv/apps/ansibleforms/ansibleforms.env \
-v /srv/apps/ansibleforms/persistent:/app/dist/persistent \
-v /srv/apps/ansibleforms/ssh:/home/node/.ssh \
ghcr.io/ansibleforms/ansibleforms:7
podman run -d --name rte --network ansibleforms --restart unless-stopped --stop-timeout 30 \
--env-file /srv/apps/ansibleforms/rte.env \
-v /srv/apps/ansibleforms/persistent:/app/dist/persistent \
-v /srv/apps/ansibleforms/ssh:/home/node/.ssh \
ghcr.io/ansibleforms/ansibleforms-rte-full:7
Se vem da 6.5, ainda não existe contentor RTE: os comandos stop e rm só encontram a aplicação. Crie a rede partilhada uma vez com docker network create ansibleforms (ou podman network create ansibleforms). Tal como faz a instalação, coloque a ligação à base de dados, o ENCRYPTION_SECRET, um RTE_TOKEN com pelo menos 16 caracteres e CONFIG_SEED_PATH no ficheiro de ambiente da aplicação, e crie o rte.env e o config seed. Use as suas próprias pastas onde a sua instalação 6.5 montava outras. O seed adiciona o RTE em Ligações → Runners como o runner predefinido rte; consulte Atualizar para a v7.
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:
docker logs -f ansibleforms
podman logs -f ansibleforms
O RTE escreve o seu próprio registo, que docker logs rte mostra. 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, execute novamente o passo 2 com a sua tag exata em vez de 7, na imagem do AnsibleForms e na do RTE. 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.