Contêineres de amostra beta/testes-aprovados não iniciam

Antes de embarcar nesta jornada comigo, observe que, embora este erro já tenha sido mencionado neste fórum duas vezes (um e dois), a solução de ‘reconstruir o contêiner de dados’ não funcionou. Estou trabalhando com dados completamente vazios e excluindo todos os contêineres/volumes/pastas de armazenamento entre as tentativas.

Por favor, note também que estou baseando meus testes nos arquivos de exemplo fornecidos. Não é um plugin, tentei remover todos os plugins.


Estou tendo problemas para iniciar contêineres vazios para os branches mais recentes tests-passed e beta. O Stable funciona como esperado. O erro ocorre com standalone ou web-only (após iniciar data, claro).

Para excluir erros de configuração, realizei os seguintes passos:

  • Copiei o arquivo samples/standalone.yml para containers/
  • Alteri apenas as seguintes coisas no arquivo:
    • Alteri o endereço SMTP para algum valor fictício
    • Alteri o endereço do discourse para algum valor fictício
    • Alteri a localização dos dados compartilhados
    • Removi a porta 443 e alterei o mapeamento da porta 80. Aqui está o resultado standalone.yml
    • Executei ./launcher rebuild standalone. Aqui estão os logs completos rebuilding_standalone.txt

E recebo o seguinte erro:

RubyZip 3.0 is coming!
**********************

The public API of some Rubyzip classes has been modernized to use named
parameters for optional arguments. Please check your usage of the
following classes:
  * `Zip::File`
  * `Zip::Entry`
  * `Zip::InputStream`
  * `Zip::OutputStream`

Please ensure that your Gemfiles and .gemspecs are suitably restrictive
to avoid an unexpected breakage when 3.0 is released (e.g. ~> 2.3.0).
See https://github.com/rubyzip/rubyzip for details. The Changelog also
lists other enhancements and bugfixes that have been implemented since
version 2.3.0.

I, [2022-07-24T01:58:05.415957 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake plugin:pull_compatible_all'
bundler: failed to load command: rake (/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/rake)
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:308:in `check_for_activated_spec!': You have already activated uri 0.10.0, but your Gemfile requires uri 0.11.0. Since uri is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports uri as a default gem. (Gem::LoadError)
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:25:in `block in setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/spec_set.rb:140:in `each'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/spec_set.rb:140:in `each'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:24:in `map'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:24:in `setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler.rb:162:in `setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/setup.rb:20:in `block in <top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/ui/shell.rb:136:in `with_level'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/ui/shell.rb:88:in `silence'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/setup.rb:20:in `<top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:56:in `require_relative'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:56:in `kernel_load'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:23:in `run'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:483:in `exec'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:31:in `dispatch'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:25:in `start'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:48:in `block in <top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:36:in `<top (required)>'
	from /usr/local/bin/bundle:23:in `load'
	from /usr/local/bin/bundle:23:in `<main>'
I, [2022-07-24T01:58:05.702191 #1]  INFO -- : 
I, [2022-07-24T01:58:05.702665 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
bundler: failed to load command: rake (/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/rake)
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:308:in `check_for_activated_spec!': You have already activated uri 0.10.0, but your Gemfile requires uri 0.11.0. Since uri is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports uri as a default gem. (Gem::LoadError)
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:25:in `block in setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/spec_set.rb:140:in `each'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/spec_set.rb:140:in `each'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:24:in `map'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:24:in `setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler.rb:162:in `setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/setup.rb:20:in `block in <top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/ui/shell.rb:136:in `with_level'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/ui/shell.rb:88:in `silence'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/setup.rb:20:in `<top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:56:in `require_relative'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:56:in `kernel_load'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:23:in `run'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:483:in `exec'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:31:in `dispatch'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:25:in `start'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:48:in `block in <top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:36:in `<top (required)>'
	from /usr/local/bin/bundle:23:in `load'
	from /usr/local/bin/bundle:23:in `<main>'
I, [2022-07-24T01:58:05.953429 #1]  INFO -- : 

Também tentei a abordagem de dois contêineres, com data e web_only. O web_only apresenta o mesmo problema.

Entre cada tentativa, eu paro e removo todos os contêineres, e também removo todas as pastas de dados.

O branch Stable funciona bem. Não acho que isso seja esperado.


Para dar contexto, estou em uma situação bem ruim.

Preciso migrar urgentemente minha instalação do Discourse do servidor atual para um novo servidor, pois o servidor atual será desativado em poucos dias.

O servidor atual está na 2.9.0.beta7. Posso iniciar um novo servidor na 2.8.6, mas não consigo aplicar um backup do servidor atual no novo servidor, pois é um downgrade. E sou incapaz de iniciar um novo servidor vazio na 2.9.0.beta7, pois ele simplesmente dá o erro acima.

Minha pasta de dados no servidor atual é grande o suficiente e não tenho espaço em disco suficiente para compactá-la e copiá-la para algum lugar; mesmo que tivesse, presumo que haveria consequências em usar dados de uma versão beta mais recente em uma versão mais antiga. Também tentei ‘fazer downgrade’ do servidor atual, por via das dúvidas, mas sei que não é suportado e de qualquer forma não funcionou.

Por que você é forçado a fazer downgrade? Por que você não consegue garantir que o host de destino seja o mais recente?

2 curtidas

Não quero fazer downgrade. Mas não consigo iniciar um novo servidor em 2.9.0.beta7 com base na mensagem de erro que coloquei neste post. Só consigo iniciar um novo servidor em 2.8.6. Tentei várias configurações diferentes com base nos arquivos de exemplo e nos meus próprios arquivos, e nem beta nem tests-passed iniciam. Não tenho certeza se essa informação está clara na primeira mensagem, no arquivo de containers ou nos arquivos de log.

Para ser justo, tudo o que preciso é garantir que posso mover meus dados de um servidor para outro. Não importa exatamente a versão, mas preciso de um novo servidor funcionando e transferir os dados antigos para o novo servidor.

O servidor antigo está em 2.9.0.beta7 neste momento. Portanto, preciso de um novo servidor que possa iniciar na versão mais recente (o que não está funcionando), ou preciso de uma maneira de transferir os dados para um 2.8.6 novo, que é a única versão em que consegui iniciá-lo.

1 curtida

Desculpe, entendi agora. Então precisamos focar nesse erro?

Idealmente, sim. Conseguir o novo servidor com a versão mais recente seria o mais simples e fácil para mim.

Mas se isso não for viável por qualquer motivo, se houver qualquer outra solução alternativa que eu possa usar, também estaria interessado. Não estou em posição de ser purista em relação a versões.

Além disso, se ajudar, estas são as informações do docker no servidor:

# docker info
Client:
 Context:    default
 Debug Mode: false

Server:
 Containers: 2
  Running: 0
  Paused: 0
  Stopped: 2
 Images: 5
 Server Version: 20.10.12
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: nvidia runc io.containerd.runc.v2 io.containerd.runtime.v1.linux
 Default Runtime: runc
 Init Binary: docker-init
 containerd version:
 runc version:
 init version:
 Security Options:
  apparmor
  seccomp
   Profile: default
  cgroupns
 Kernel Version: 5.15.0-41-generic
 Operating System: Ubuntu 22.04 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 5.797GiB
 Name: maji
 ID: OIRP:TYAE:HIPS:SIF3:NZRF:22QI:GO5A:64A4:OP2O:ALVA:PPLN:4TOH
 Docker Root Dir: /data/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

Estou executando o launcher como root. Agora, tenho executado todos os tipos de contêineres docker em máquinas com a mesma configuração e não tive problemas.

Agora, não tenho certeza se o problema pode ser potencialmente permissões de arquivo, o erro não me leva a pensar nisso.

/opt/discourse# ls -la
total 140
drwxr-xr-x 14 root root  4096 Jul 24 01:26 .
drwxr-xr-x  7 root root  4096 Jul 15 07:23 ..
drwxr-xr-x  8 root root  4096 Jul 24 02:30 .git
drwxr-xr-x  3 root root  4096 Jul 15 07:23 .github
-rw-r--r--  1 root root   309 Jul 15 07:23 .gitignore
-rw-r--r--  1 root root  1099 Jul 15 07:23 LICENSE
-rw-r--r--  1 root root  8285 Jul 15 07:23 README.md
drwxr-xr-x  2 root root  4096 Jul 15 07:23 bin
drwxr-xr-x  2 root root  4096 Jul 24 02:34 cids
drwxr-xr-x  2 root root  4096 Jul 24 02:30 containers
-rwxr-xr-x  1 root root 11956 Jul 15 07:23 discourse-doctor
-rwxr-xr-x  1 root root 27053 Jul 15 07:23 discourse-setup
drwxr-xr-x  8 root root  4096 Jul 15 07:23 image
-rwxr-xr-x  1 root root 22547 Jul 15 07:23 launcher
drwxr-xr-x  2 root root  4096 Jul 24 01:39 samples
drwxr-xr-x  2 root root  4096 Jul 15 07:23 scripts
drwxr-xr-x  2 root root  4096 Jul 15 07:23 shared
drwxr-xr-x  3 root root  4096 Jul 15 07:23 templates
drwxr-xr-x  2 root root  4096 Jul 15 07:23 tests
/opt/discourse# ls -la containers/
total 16
drwxr-xr-x  2 root root 4096 Jul 24 02:30 .
drwxr-xr-x 14 root root 4096 Jul 24 01:26 ..
-rw-r--r--  1 root root    0 Jul 15 07:23 .gitkeep
-rw-r--r--  1 root root 1258 Jul 24 02:08 data.yml
-rw-r--r--  1 root root 3542 Jul 24 02:30 web.yml
/opt/discourse# cd /data/discourse/
/data/discourse# ls -la
total 16
drwxr-xr-x 4 root root 4096 Jul 24 02:06 .
drwxr-xr-x 5 root root 4096 Jul 23 11:58 ..
drwxr-xr-x 6 root root 4096 Jul 24 02:09 data
drwxr-xr-x 7 root root 4096 Jul 24 02:34 web

Tente copiar as linhas abaixo das linhas que dizem bundle install (por volta da linha 160)

  - exec:
      cd: $home
      cmd:
        - su discourse -c 'gem update uri'

Tentei adicionar isso ao bloco run, abaixo de exec: echo \"Beginning of custom commands\", e acho que foi tarde demais.

Então, adicionei a hooks: -> after_code:

Eu recebi isso:

I, [2022-07-24T12:13:24.641982 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'gem update uri'
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /usr/local/lib/ruby/gems/2.7.0 directory.
I, [2022-07-24T12:13:29.392041 #1]  INFO -- : Updating installed gems
Updating uri

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'gem update uri' failed with return #<Process::Status: pid 132 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["su discourse -c 'gem update uri'"]}

Eu fui em frente e removi o su discourse caso isso ajudasse. Isso parece ter progredido bem, e eu encontrei outro erro:

I, [2022-07-24T12:21:17.497935 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile'
sh: 1: yarn: not found
I, [2022-07-24T12:21:19.397390 #1]  INFO -- :


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 5373 exit 127>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

Pensei que então eu deveria instalar o yarn manualmente? Eu deletei todos os plugins, incluindo docker_manager, por via das dúvidas. Ele ainda pediu por yarn, então pensei que poderia muito bem instalá-lo:

I, [2022-07-24T12:37:42.295754 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake plugin:pull_compatible_all'
WARNING: Plugins were activated before running `rake plugin:pull_compatible_all`
  You should prefix this command with LOAD_PLUGINS=0
I, [2022-07-24T12:37:44.807237 #1]  INFO -- :
I, [2022-07-24T12:37:44.807548 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
I, [2022-07-24T12:37:48.578845 #1]  INFO -- :
I, [2022-07-24T12:37:48.579098 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile'
error Command "ember" not found.
I, [2022-07-24T12:37:50.795001 #1]  INFO -- : yarn run v1.22.19
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.



FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 5409 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

Então começou a reclamar sobre o ember. Mesmo que eu tenha tentado instalá-lo manualmente.

É assim que meu after_code está agora:

hooks:
  after_code:
    - exec:
        cd: $home
        cmd:
          - gem update uri
          - npm install -g yarn
          - npm install -g ember
        #- exec:
        # cd: $home/plugins
        #cmd:
            #- git clone https://github.com/discourse/docker_manager.git

Não tenho certeza se esse é o caminho certo.

A boa notícia é que este comando aparentemente está sendo executado agora.

Notei a falta do LOAD_PLUGINS antes, mas não mencionei. Você removeu isso? Está lá no template original. Se você modificou o template, não custaria nada ver se há mais coisas que você mudou. Ou talvez você esteja em uma versão antiga. Você fez git pull antes de reconstruir o aplicativo?

3 curtidas

Eu não toquei nisso. Não consigo encontrá-lo nos arquivos de exemplo web_only.yml nem em standalone.yml. Eu não o adicionei, mas isso é apenas um aviso, suponho?

O erro que eu estava tendo está relacionado ao ember, não aos plugins.


Para ser honesto, eu fiz git pull um monte de vezes, mas estava bem estável e nenhum novo commit foi puxado.

Enquanto eu obtinha o link exato para o commit, percebi que minha automação estava fazendo checkout do branch master, e acho que isso nem dá um aviso nem nada. Pelo que verifiquei, ao fazer checkout de main, funcionou. Parece que foi alterado no ano passado.

1 curtida

Eu sei disso, mas a falta do LOAD_PLUGINS=0 foi um sinal para mim de que você estava executando uma versão antiga do repositório.

1 curtida

Teria sido bom ter uma linha de log no início do launcher referenciando o fato de que eu estava executando o branch legado. Teria economizado muito esforço.

Não sei se a expectativa em relação ao launcher é que ele mudaria automaticamente o branch do git, mas isso definitivamente não aconteceu para mim.

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