Install Discourse for development using Docker

O mesmo, ele dá erro ao tentar gerar o perfil de usuário administrador. Funciona após adicionar uma etapa de yarn install antes de criar o administrador conforme sugerido por @zergov. Eu fui em frente e criei um PR para adicioná-lo: DEV: Yarn install to avoid error during initial migration seed by dsims · Pull Request #20866 · discourse/discourse · GitHub

Acompanhamento:
O modo Rootless do Docker causa os mesmos problemas de mapeamento de permissão no Linux que o Docker Desktop. A solução alternativa que postei também funcionará com essa configuração.

No entanto, não estou muito confiante com a solução alternativa, então mudei para uma instalação nativa do Docker no meu sistema Linux, adicionei meu usuário sem sudo ao grupo docker e agora as permissões são mapeadas corretamente dentro do contêiner e posso executar comandos do docker sem sudo.

Obrigado @dsims, acabei de mesclar o PR :raised_hands:

1 curtida

Eu chego até aqui ao usar o podman (tentando executar d/boot_dev --init):

Installing gems...
Error response from daemon: environment variable "RAILS_ENV" badly formed, must be key=value

Acho que precisarei usar a abordagem do ambiente de desenvolvimento nativo, pois não vou instalar o docker no meu desktop Fedora, já que ele está realmente quebrado há anos (com coisas aleatórias como push não funcionando) e o podman funciona muito melhor sem nenhum problema (para projetos que o suportam).

erro
erro Não foi possível gravar o arquivo “/src/app/assets/javascripts/discourse/yarn-error.log”: “EACCES: permissão negada, abrir ‘/src/app/assets/javascripts/discourse/yarn-error.log’”
erro Ocorreu um erro inesperado: “EACCES: permissão negada, criar diretório ‘/src/app/assets/javascripts/node_modules’”.

Por que recebo este erro ao executar d/boot_dev --init?

3.0" tem dependência de par incorreta "@uppy/core@^3.2.1".
[4/4] Construindo pacotes novos...
$ ../run-patch-package
patch-package 8.0.0
Aplicando patches...
@ember/jquery@2.0.0 ✔
babel-plugin-debug-macros@0.3.4 ✔
content-tag@1.1.1 ✔
ember-source@3.28.12 ✔
ember-this-fallback@0.3.1 (1 inicial) ✔
ember-this-fallback@0.3.1 (2 temas) ✔
virtual-dom@2.1.1 ✔
Concluído em 101.54s.
Migrando banco de dados...
rake abortou!
Discourse::Utils::CommandError: /src/lib/discourse.rb:138:in `exec': node:internal/modules/cjs/loader:1080
  throw err;
  ^

Error: Cannot find module 'esbuild'
Require stack:
- /src/app/assets/javascripts/theme-transpiler/build.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)
    at Module._load (node:internal/modules/cjs/loader:922:27)
    at Module.require (node:internal/modules/cjs/loader:1143:19)
    at require (node:internal/modules/cjs/helpers:121:18)
    at Object.<anonymous> (/src/app/assets/javascripts/theme-transpiler/build.js:3:17)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Module._load (node:internal/modules/cjs/loader:960:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/src/app/assets/javascripts/theme-transpiler/build.js' ]
}

Node.js v18.17.1
/src/lib/discourse.rb:172:in `execute_command'
/src/lib/discourse.rb:138:in `exec'
/src/lib/discourse.rb:34:in `execute_command'
/src/lib/discourse_js_processor.rb:119:in `build_theme_transpiler'
/src/lib/tasks/assets.rake:313:in `block in <main>'
Tasks: TOP => db:migrate => assets:precompile:theme_transpiler
(See full trace by running task with --trace)

Possivelmente relacionado a isto: Install Discourse for development using Docker - #239 by zergov

Talvez tente ir para o diretório /var/www/discourse e executar:

yarn install

Alguém tem alguns benchmarks sobre isso?

Eu fiz uma busca neste tópico, mas não encontrei especificamente isso. Gostaria de saber se alguém tentou a instalação normal e a Docker para comparar entre elas :slight_smile:

Algumas dicas para quem está tentando usar o procedimento descrito neste tópico:

  1. O Passo 1 não funcionou para mim. Para instalar o Docker, tive que usar o “convenience script” descrito aqui: Ubuntu | Docker Docs

  2. Você precisa de sudo para todos os comandos

  3. Parece haver um passo 3 faltando: você precisa criar uma conta de usuário administrador. Para criar um novo administrador, execute o seguinte comando: sudo d/rails admin:create

  4. Conforme declarado no tópico, se você usar o WSL, os links simbólicos para o sistema de arquivos do Windows não funcionarão. Se você tentar mesmo assim, quebrará a instalação e acabará com gems faltando. Para recuperar suas gems, execute: sudo d/bundle install

2 curtidas

Olá.

Estou tentando instalar o desenvolvimento em um Debian 12.

Quando executo o comando…

d/boot_dev --init

…depois de um tempo, o seguinte erro aparece:

$ ../run-patch-package
patch-package 8.0.0
Applying patches...
@ember/jquery@2.0.0 ✔
babel-plugin-debug-macros@0.3.4 ✔
content-tag@1.1.2 ✔
ember-source@3.28.12 ✔
ember-this-fallback@0.4.0 (1 deprecation-name) ✔
ember-this-fallback@0.4.0 (2 themes) ✔
virtual-dom@2.1.1 ✔
Done in 70.39s.
Migrating database...
rake aborted!
Discourse::Utils::CommandError: /src/lib/discourse.rb:138:in `exec': node:internal/modules/cjs/loader:1080
  throw err;
  ^

Error: Cannot find module 'esbuild'
Require stack:
- /src/app/assets/javascripts/theme-transpiler/build.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)
    at Module._load (node:internal/modules/cjs/loader:922:27)
    at Module.require (node:internal/modules/cjs/loader:1143:19)
    at require (node:internal/modules/cjs/helpers:121:18)
    at Object.<anonymous> (/src/app/assets/javascripts/theme-transpiler/build.js:3:17)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Module._load (node:internal/modules/cjs/loader:960:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/src/app/assets/javascripts/theme-transpiler/build.js' ]
}

Node.js v18.17.1
/src/lib/discourse.rb:172:in `execute_command'
/src/lib/discourse.rb:138:in `exec'
/src/lib/discourse.rb:34:in `execute_command'
/src/lib/discourse_js_processor.rb:119:in `build_theme_transpiler'
/src/lib/tasks/assets.rake:313:in `block in <main>'
Tasks: TOP => db:migrate => assets:precompile:theme_transpiler
(See full trace by running task with --trace)

Estou fazendo algo errado?

1 curtida
yarn install # isso reinstalará tudo, incluindo esbuild
# removendo o contêiner instalado anteriormente com erro
docker stop discourse_dev
docker rm discourse_dev
d/boot_dev --init
# Ele solicitará que você insira o e-mail do administrador se for bem-sucedido.

Olá. Depois de colocar um symlink no diretório discourse/plugin e reiniciar:

$ d/rails s

Recebo o seguinte erro:

https://github.com/rails/sprockets (at 3.x@f4d3dae) ainda não foi descompactado. Execute `bundle install` primeiro

“Bundle install” não resolve o problema. Tentei várias coisas, mas nada parece resolver isso. Se eu remover o symlink no diretório de plugins e reiniciar, tudo volta a funcionar. Tentei com diferentes plugins oficiais que sei que funcionam em outras instalações do discourse.

Alguém sabe por que isso acontece?

1 curtida

Você pode tentar d/bundle install em vez disso?

1 curtida

Eu consigo executar d/bundle install, isso funciona e eu consigo iniciar tudo, mas o plugin não aparece instalado no discourse.

Então eu executo d/shutdown_dev; d/boot_dev mas depois disso ele dá a antiga mensagem de erro novamente https://github.com/rails/sprockets (at 3.x@f4d3dae) is not yet checked out. Run `bundle install` first

vOv

Eu melhorei isso em

É definitivamente confuso ter que executar d/bundle install manualmente cada vez que você inicializa o ambiente de desenvolvimento. Enquanto isso, infelizmente você terá que executar d/bundle install cada vez que executar d/boot_dev.

3 curtidas

Estou recebendo este erro.

error Não foi possível gravar o arquivo “/src/app/assets/javascripts/discourse/yarn-error.log”: “EACCES: permissão negada, abrir ‘/src/app/assets/javascripts/discourse/yarn-error.log’”

error Ocorreu um erro inesperado: “EACCES: permissão negada, criar ‘/src/app/assets/javascripts/node_modules’”.

hmmm :thinking: Acho que é o mesmo que aqui - não consigo encontrar onde foi resolvido em lugar nenhum.

1 curtida

Você está executando isso como um usuário não-root sem sudo?

Era o usuário root.

Estou tentando instalar o Discourse Development em um WSL Docker - Cheguei à tela de parabéns, mas sem uma conta de administrador estou travado.

Quando tento executar d/rails admin:create, recebo o erro stat bin/rails: no such file or directory: unknown.

O que estou perdendo?

Obrigado.