Acho que deveria ser d/rake admin:create…
Infelizmente não ![]()
OCI runtime exec failed: exec failed: unable to start container process: exec: "bin/rake": stat bin/rake: no such file or directory: unknown
qual foi o resultado de: d/boot_dev --init ?
Usando a origem em: /home/martyn/discourse
Usando dados em: /home/martyn/discourse/data/postgres
release: Puxando de discourse/discourse_dev
Digest: sha256:b64199f510bd9831af81ba8268bef3beff2abb45d0a264a0e29b35cfc3986f05
Status: A imagem está atualizada para discourse/discourse_dev:release
docker.io/discourse/discourse_dev:release
docker: Resposta de erro do daemon: Conflito. O nome do contêiner "/discourse_dev" já está em uso pelo contêiner "44c83548a9a9060716aa7d4fd803e239227f48375625f1d27da19b3d4162c56a". Você tem que remover (ou renomear) esse contêiner para poder reutilizar esse nome.
Veja 'docker run --help'.
OK, então você construiu o contêiner.
Isso é muito estranho. Eu acabei de instalar no WSL do zero e funcionou para mim, embora eu tenha precisado executar d/exec yarn manualmente.
Sugiro parar, deletar seu contêiner e começar de novo, prestando atenção aos erros anunciados no console.
Tenho trabalhado para configurar um ambiente de desenvolvimento Discourse com as instruções do Docker e estou vendo erros ao executar quaisquer comandos do Yarn. Os comandos Ruby funcionam bem, mas executar d/yarn (e quaisquer de seus subcomandos) falha com este erro:
discours(v3.1.3) $ d/exec yarn -v
<--- Últimos GCs --->
<--- Pilha de chamadas JS --->
#
# Fatal javascript OOM em MemoryChunk alocação falhou durante a desserialização.
#
Estou no Fedora 39 com Docker 24.0.7. Não modifiquei nada além de fazer checkout do Discourse do Git e mudar para a tag v3.1.3.
Alguém já viu esse erro antes? Obrigado!
Parece que está ficando sem memória:
Quanta RAM ele tem?
Minha máquina tem 64 GB de RAM e não acredito que tenha definido nenhum limite para o uso de memória do Docker. Tenho apenas uma instalação padrão do Docker em execução.
Editar: é interessante, os comandos do Node funcionam, mas o Yarn falha:
discourse(v3.1.3*) $ d/exec node -v
v18.17.1
discourse(v3.1.3*) $ d/exec yarn -v
<--- Últimos GCs --->
<--- Pilha de chamadas JS --->
#
# OOM fatal de JavaScript em MemoryChunk alocação falhou durante a desserialização.
#
Uma atualização rápida: os comandos do Node também falham em testes adicionais:
discourse(v3.1.3*) $ d/exec node --help
<--- Last few GCs --->
<--- JS stacktrace --->
#
# Fatal javascript OOM in MemoryChunk allocation failed during deserialization.
#
Qualquer coisa além de d/exec node -v gera esse erro.
Continuarei investigando e tentando descobrir uma solução.
Descobri uma solução para o meu problema. É um processo um tanto complicado e improvisado, mas funciona. Em resumo, atualizar para o Node.js 20.x.x corrigiu meu problema.
Criei uma imagem Docker que usa o Node.js v20.x.x em vez do v18.x.x padrão que a imagem Docker de desenvolvimento do Discourse usa.
Comecei criando este Dockerfile:
# NOME: discourse_node20
FROM discourse/discourse_dev:release
# atualiza o node para LTS 20.x.x
ENV NODE_MAJOR=20
RUN apt-get update
RUN apt-get install -y ca-certificates curl gnupg
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
RUN apt-get update
RUN apt-get install nodejs -y
Em seguida, compilei a imagem: docker build -t discourse_node20 - < Dockerfile
Em seguida, atualizei o comando docker run do d/boot_dev para usar a imagem discourse_node20 e não puxar discourse/discourse_dev:release, já que ela não está sendo usada. Aqui está esse comando atualizado em d/boot_dev:
# comente a linha abaixo
# docker pull discourse/discourse_dev:release
docker run \
-d \
-p $local_publish:8025:8025 \
-p $local_publish:3000:3000 \
-p $local_publish:4200:4200 \
-p $local_publish:9292:9292 \
-p $local_publish:9405:9405 \
-v "$DATA_DIR:/shared/postgres_data:delegated" \
-v "$SOURCE_DIR:/src:delegated" \
-e UNICORN_BIND_ALL=true \
-e NODE_OPTIONS=--max_old_space_size=8192 \
$mount_plugin_symlinks \
$ENV_ARGS \
--hostname=discourse \
--name=discourse_dev \
--restart=always \
discourse_node20 /sbin/boot
A partir daí, consegui executar com sucesso d/boot_dev --init, d/rails s e d/ember-cli, o que me proporcionou um ambiente de desenvolvimento funcional no Docker 24 e Fedora 39.
Não sei por que o Node 20.x.x corrige o problema. Espero que isso seja corrigido no upstream na imagem de desenvolvimento principal. Eu ficaria feliz em contribuir com um pull request, mas atualizar uma dependência principal parece ser algo além de um simples PR de correção rápida da minha parte.
Bem, pelo menos estou liberado por enquanto!
Alguém conseguiu fazer isso funcionar em um Raspberry Pi? (sim, eu sei que a configuração de produção é suportada). Quais alterações/configurações são necessárias?
Eu recebo:
AVISO: A plataforma da imagem solicitada (linux/amd64) não corresponde à plataforma do host detectada (linux/arm64/v8) e nenhuma plataforma específica foi solicitada
E então o contêiner simplesmente trava e reinicia constantemente.
ATUALIZAÇÃO: Ah, vejo que uma imagem de suporte ainda não foi introduzida? Compare:
https://hub.docker.com/r/discourse/base/tags
(que é suportada)
com
https://hub.docker.com/r/discourse/discourse_dev/tags
Não há versão arm64 listada para esta última…
Alguém no Mac OS (13.6.3) (Intel) obteve sucesso em executar o Discourse em docker… e pode compartilhar como superou o erro Error: Cannot find module 'esbuild'?
Notei que no aplicativo boot_dev, o yarn nunca é executado para o diretório de nível superior, apenas para app/assets/javascripts/discourse:
echo "Yarn install..."
"${SCRIPTPATH}/exec" yarn install --cwd app/assets/javascripts/discourse
Portanto, faz sentido que o esbuild não esteja instalado, pois essa é uma dependência descrita no package.json de nível superior.
No entanto, este package.json não pode ser instalado fora do contêiner, pois a versão errada do esbuild será instalada (Mac, não Linux… mas o contêiner precisa de Linux).
Não deveria haver uma linha em boot_dev logo acima de “installing gems” que se pareça com isto?
echo "Installing top-level package.json ..."
"${SCRIPTPATH}/exec" yarn install
Quando adiciono uma linha como essa, consigo passar da etapa de migrações sem um erro de esbuild…
Isso foi corrigido? Eu consegui instalar e executar, mas no dia seguinte, quando voltei e executei d/boot_dev, recebi este aviso e ele não cria mais meu contêiner.
É improvável que o desenvolvimento do Discourse funcione usando a emulação de arquitetura do Docker.
Por favor, tente uma instalação de desenvolvimento nativa.
Usando código fonte em: /Users/n_selvidge/discourse
Usando dados em: /Users/n_selvidge/discourse/data/postgres```
Entre em contato com o provedor de proxy e certifique-se de que essas chamadas sejam permitidas?
Recebi o mesmo erro ao executar d/rails s,
/home/discourse/.bundle/gems/ruby/3.2.0/gems/activerecord-7.0.8.1/lib/active_record/connection_adapters/postgresql_adapter.rb:87:in `rescue in new_client': connection to server at \"10.169.51.142\", port 5432 failed: Connection refused (ActiveRecord::ConnectionNotEstablished)
Is the server running on that host and accepting TCP/IP connections?
Qualquer ajuda é bem-vinda!
d/rails s retorna:
Erro na resposta do daemon: Nenhum contêiner encontrado: discourse_dev
Alguma sugestão?
Você executou d/boot_dev primeiro?
Sim, eu inseri isso, obrigado. Para recomeçar, presumo que eu deva excluir o contêiner da GUI do Docker, bem como a pasta do repositório do discourse?


