Instalando Discourse em um servidor sem acesso ao DockerHub

@sam Sam, minha empresa agora está bloqueando o docker hub. Estou executando o Docker para Discourse em vários ambientes e preciso fazer um upgrade. Falha, é claro:

Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client
Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client
Unable to find image 'discourse/base:2.0.20230502-0058' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client.

A maneira mais fácil que vejo para fazer upgrades é usar outra máquina que não esteja na mesma rede e baixar a imagem base mais recente do Discourse… depois, de alguma forma, puxar ou empurrar para a máquina a ser atualizada. Então, de alguma forma, forçar o Discourse ou o launcher a procurar localmente e não tentar puxar do Docker hub… Vi vários tópicos onde quase encontrei que isso poderia funcionar, mas nada claro. Como eu faria isso?

docker save e docker load vão te ajudar com isso.

@Falco Você poderia me dar exemplos específicos de comandos de como salvar e carregar… como o que salvar e onde salvar e qual comando completo para carregar?

Já usei a mesma ideia deste post várias vezes com sucesso

Posso preparar um exemplo mais específico amanhã quando estiver no meu desktop

1 curtida

@Falco - Muito obrigado, aguardo o exemplo para desktop… Espero que eu esteja entendendo isso corretamente, pois estou preocupado em apagar meus sites hospedados com mais do que apenas um ‘upgrade’

Tenho meu site Docker do Discourse da empresa que está desatualizado e contém certas informações que não posso mover para fora da empresa… devido a regras da empresa, etc. São 4 diferentes… vamos chamá-los de: np.falcoisgreat.com, stg.falcoisgreat.com, tst.falcoisgreat.com e www.falcoisgreat.com, todos eles atrás de umas 4 pequenas versões… eles não conseguem mais acessar o Docker Hub quando o launcher tenta buscar a imagem base Docker mais recente.

Então, no mundo real das liberdades da internet, eu criei uma nova caixa Ubuntu com Discourse Docker apenas para baixar a imagem base Docker mais recente do Discourse (na verdade, em https://discourse1.codeplus.cloud) - Agora, o que pretendo fazer é apenas obter a nova imagem, sem conteúdo, sem nada, empacotá-la com o que acho que é o docker save e, em seguida, baixar esse arquivo tar para, digamos, np.falcoisgreat.com com curl ou sftp e, em seguida, usar docker load?

Não sei os detalhes disso e vou investigar e ler, mas o que me preocupa é apagar o conteúdo e a configuração atuais de “np.falcoisgreat.com” — Farei backups, é claro, mas para mim é melhor saber uma maneira de não apagar nada. Por favor, confirme se esta solução se destina a fazer o que eu acho que se destina a fazer?

Obrigado!

Seja:

  • server1 o servidor com acesso à internet

  • server2 um servidor que não consegue acessar o DockerHub

Faça:

ssh root@server1
docker pull discourse/base:2.0.20230502-0058


# se server1 puder acessar server2
docker save discourse/base:2.0.20230502-0058 | bzip2 | ssh root@server2 docker load
# aguarde a conclusão e saia de server1
ssh root@server2
cd /var/discourse
./launcher rebuild app


# se server1 não puder acessar server2
docker save -o /tmp/discourse-base-image.tar discourse/base:2.0.20230502-0058
# transfira o arquivo para server2 via pen drive, ftp, disquetes, etc.
ssh root@server2
docker load -i /tmp/discourse-base-image.tar 
cd /var/discourse
./launcher rebuild app
2 curtidas

Isso é muito legal. Eu não sabia disso.

O único truque então é saber como e quando mudar discourse/base:2.0.20230502-0058.

E eu acho que é só

cd /var/discourse
git pull
DISCOURSE_BASE=$(grep -e ^image= $DISCOURSE_DOCKER_SRC/launcher|cut -d'\"' -f2)
docker pull $DISCOURSE_BASE

E assim por diante com o comando save.

1 curtida

Obrigado @Falco, até agora tudo bem. Dois ambientes atualizados!

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.