Sin embargo, tengo problemas al crear una copia de seguridad desde la sección de administración. El error que recibo es: pg_dump: error: connection to database "discourse development" failed: FATAL: Peer authentication failed for user "postgres".
He verificado el archivo pg_hba.conf y tengo todas las opciones configuradas en trust.
Sería genial si pudieras ayudarme a solucionar esto.
Lo he probado tanto en Ubuntu como en MacOSX. Todo funciona correctamente en ambos (crear publicaciones, API…) excepto la funcionalidad de copia de seguridad.
LOAD_PLUGINS y RAILS_ENV deben ir antes del comando para asignar variables de entorno. Si se colocan después del comando, se interpretan como argumentos para rspec, el cual no los reconoce.
Disculpas, malinterpreté tus dos comandos como “el primero funciona para esta otra especificación, el segundo no funciona para esta especificación”. No tengo un entorno de desarrollo configurado para probar.
Al revisar el archivo rspec en GitHub, creo que tienes razón en que no se están pasando las variables de entorno. Parece que deberías poder ejecutar d/shell para obtener una shell dentro del contenedor y luego ejecutar tu comando rspec allí.
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "LOAD_PLUGINS=1": executable file not found in $PATH: unknown
Tengo exactamente el mismo problema que Max. Cada vez que intento hacer una copia de seguridad o una restauración en mi instalación local de desarrollo con Docker, obtengo el mismo error: Peer authentication failed for user "postgres".
Después de investigar un poco, descubrí que en el entorno de desarrollo la configuración de la base de datos aparece así:
De alguna manera, el entorno de desarrollo no está estableciendo el nombre de usuario en las variables de entorno, y entonces el módulo BackupRestore asigna por defecto el valor del nombre de usuario a postgres.
Estoy intentando probar un plugin usando la configuración de Docker. De forma aleatoria, la aplicación deja de cargar y solo me aparece una página en blanco hasta que elimino la carpeta de datos y reconstruyo todo. ¿Alguna sugerencia sobre cómo depurar el problema?
He cambiado de mi Mac local a una VM con Ubuntu esperando que esto facilitara la ejecución, pero desafortunadamente, hasta ahora no ha sido así.
Ya estoy luchando con algunos problemas extraños de permisos en las primeras etapas. d/bundle install indica que necesita derechos de sudo para instalar algunos paquetes, y d/rails s también devuelve errores de permisos.
Traceback (most recent call last):
8: from /src/bin/unicorn:70:in `<main>'
7: from /src/bin/unicorn:38:in `ensure_cache_clean!'
6: from /usr/local/lib/ruby/2.7.0/fileutils.rb:211:in `mkdir_p'
5: from /usr/local/lib/ruby/2.7.0/fileutils.rb:211:in `each'
4: from /usr/local/lib/ruby/2.7.0/fileutils.rb:226:in `block in mkdir_p'
3: from /usr/local/lib/ruby/2.7.0/fileutils.rb:226:in `reverse_each'
2: from /usr/local/lib/ruby/2.7.0/fileutils.rb:228:in `block (2 levels) in mkdir_p'
1: from /usr/local/lib/ruby/2.7.0/fileutils.rb:250:in `fu_mkdir'
/usr/local/lib/ruby/2.7.0/fileutils.rb:250:in `mkdir': Permiso denegado @ dir_s_mkdir - /src/tmp (Errno::EACCES)
¿Alguna idea de qué está fallando? Esta máquina ejecutaba anteriormente un Discourse de producción sin problemas. Solo detuve y eliminé esos contenedores y cloné el repositorio git de desarrollo en un directorio diferente. Lo estoy ejecutando todo a través de tmux para manejar las diferentes instancias de shell.
la única solución es cambiar a imágenes multiarquitectura compatibles con arm64. Estas también serán mucho más rápidas y, en general, más confiables. Recomiendo investigar qué imágenes base están utilizando y cambiar a imágenes multiarquitectura donde sea posible. Pueden ver qué arquitecturas son compatibles con cada imagen en Docker Hub: […]
¿Está el equipo de Discourse dispuesto a apoyar una imagen multiarquitectura? Parece que la imagen base de Discourse se basa en debian:buster-slim, que sí es multiarquitectura, por lo que no debería ser excesivamente difícil hacer que la imagen base de Discourse sea multiarquitectura, pero eso podría ponerlos en la posición de tener que apoyar ARM (¡en producción!). Alguien (¿el equipo de Discourse?) tendría que ejecutar las pruebas de Discourse tanto en x86_64 como en ARM, solucionar problemas cuando fallen, etc.
¿Sería bienvenido incluso un PR aquí?
(En mi opinión, parece que ARM es la arquitectura del futuro, incluso en entornos alojados en la nube.)
No puedo hacer que esto funcione en openSUSE Leap 15. Supongo que no es un sistema operativo compatible, aunque como usamos Docker, realmente no debería importar…
Migrating database...
rake aborted!
Errno::EACCES: Permission denied @ dir_s_mkdir - /src/app/assets/javascripts/plugins
/src/lib/plugin/instance.rb:441:in `ensure_directory'
/src/lib/plugin/instance.rb:713:in `activate!'
lib/discourse.rb:283:in `block in activate_plugins!'
lib/discourse.rb:280:in `each'
lib/discourse.rb:280:in `activate_plugins!'
/src/config/application.rb:318:in `block in <class:Application>'
/src/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/src/config/application.rb:317:in `<class:Application>'
/src/config/application.rb:73:in `<module:Discourse>'
/src/config/application.rb:72:in `<main>'
/src/Rakefile:7:in `<main>'
(See full trace by running task with --trace)
Intenté crear manualmente “app/assets/javascripts/plugins” y eso me llevó a
Migrating database...
rake aborted!
Errno::EACCES: Permission denied @ dir_s_mkdir - /src/tmp
lib/discourse.rb:94:in `atomic_write_file'
/src/lib/plugin/instance.rb:726:in `activate!'
lib/discourse.rb:283:in `block in activate_plugins!'
lib/discourse.rb:280:in `each'
lib/discourse.rb:280:in `activate_plugins!'
/src/config/application.rb:318:in `block in <class:Application>'
/src/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/src/config/application.rb:317:in `<class:Application>'
/src/config/application.rb:73:in `<module:Discourse>'
/src/config/application.rb:72:in `<main>'
/src/Rakefile:7:in `<main>'
(See full trace by running task with --trace)
Así que haré mkdir tmp en la carpeta fuente…
Pero entonces llego aquí:
Migrating database...
rake aborted!
Errno::EACCES: Permission denied @ rb_sysopen - /src/tmp/5ad4443faf817dc922116f8df65ae5c3
lib/discourse.rb:97:in `initialize'
lib/discourse.rb:97:in `open'
lib/discourse.rb:97:in `atomic_write_file'
/src/lib/plugin/instance.rb:726:in `activate!'
lib/discourse.rb:283:in `block in activate_plugins!'
lib/discourse.rb:280:in `each'
lib/discourse.rb:280:in `activate_plugins!'
/src/config/application.rb:318:in `block in <class:Application>'
/src/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/src/config/application.rb:317:in `<class:Application>'
/src/config/application.rb:73:in `<module:Discourse>'
/src/config/application.rb:72:in `<main>'
/src/Rakefile:7:in `<main>'
(See full trace by running task with --trace)
Parece que boot_dev está ejecutando docker exec como el usuario discourse… pero los directorios son propiedad de un usuario 1016 (el uid del usuario de mi host).
Imagino que muchos desarrolladores no se encuentran con este problema en sus portátiles personales donde su usuario tiene un uid de 1000 y coincide casualmente…