I’m an engineer at Compose/IBM and I’m attempting to setup Discourse using our production-ready, replicated databases. I’d like to run a web_only instance with external Redis & PostgreSQL
I also couldn’t find configuration parameters for failover support:
We supply two URIs “portals” for connection failover. I don’t have a ton of time to dig through the Discourse codebase and see which client driver you are using.
Lastly, we use SSL (using valid LE certs) for both Redis and PostgreSQL. Is your app configured for SSL support?
Thanks!
P.S. I’m reaching out personally, not officially from IBM/Compose. I enjoy Discourse and have been considering writing an article on how to configure Discourse using our services:
You can see all of the possible global vars documented at:
You can pass in config from your environment, all the settings below are available.
Append DISCOURSE_ and upper case the setting in ENV. For example:
to pass in db_timeout of 200 you would use DISCOURSE_DB_TIMEOUT=200
Estoy haciendo esto para una aplicación docker-compose, y a pesar de exportar la variable de entorno DISCOURSE_REDIS_HOST (como redis), no está respetando esta variable:
name, 'name', name),\n updated_at,\n created_at,\n updated_at\nFROM facebook_user_infos\n")
discourse_1_9cc0cea436ca | rake aborted!
discourse_1_9cc0cea436ca | Redis::CannotConnectError: Error al conectar con Redis en localhost:6379 (Errno::ECONNREFUSED)
discourse_1_9cc0cea436ca | /usr/local/bundle/gems/redis-4.0.1/lib/redis/client.rb:344:in `rescue in establish_connection'
Mi código completo está aquí si quieres inspeccionarlo. Por alguna razón, las variables (que deberían ser respetadas) no lo están. Para dar contexto, realmente quiero ayudar con un plugin, pero las barreras de entrada (configurar un entorno de desarrollo básico sin instalar todo en mi host) son enormes. La única vez que logré que Discourse funcionara fue usando la imagen de Bitnami, de la cual me han dicho (en otro lugar) que no es la forma correcta de hacerlo. Por favor, ayúdenme: esto no debería ser tan difícil, especialmente cuando doy mi tiempo libre porque quiero ayudar
No estoy muy seguro de por qué estás teniendo ese problema, pero experimentarás considerablemente menos dificultades si lo haces de esta manera recomendada: Install Discourse for development using Docker
Quizás estoy leyendo el código incorrectamente, pero el script bin/docker/boot_dev --init todavía interactúa con una base de datos y dependencias en el host.
En cuanto al segundo hilo, ¿a qué en particular me estás pidiendo que mire? Tiene 151 publicaciones. ¡Gracias!
Esa variable se respeta perfectamente en producción.
Para el desarrollo, buscamos una instancia local de forma predeterminada, lo cual funciona perfectamente si sigues uno de los entornos de desarrollo compatibles.
Lo estoy ejecutando con ‘production’ como variable de entorno, pero no se estaba respetando. Como solución temporal, modifiqué la configuración con sed y eso lo solucionó. Aún hay numerosos otros problemas con los que estoy trabajando.
Por ejemplo, empiezo indicando explícitamente que no se debe desvincular (para mantener el contenedor en ejecución):
bundle exec rails s --port 3000 --no-daemon --environment=production --binding 0.0.0.0
pero parece que decide hacerlo de todos modos. Y entonces, lógicamente, el contenedor se cierra.
discourse_1_f60e0e3f1186 | [358] Puma starting in cluster mode...
discourse_1_f60e0e3f1186 | [358] * Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas
discourse_1_f60e0e3f1186 | [358] * Min threads: 8, max threads: 32
discourse_1_f60e0e3f1186 | [358] * Environment: production
discourse_1_f60e0e3f1186 | [358] * Process workers: 4
discourse_1_f60e0e3f1186 | [358] * Preloading application
discourse_1_f60e0e3f1186 | [358] * Listening on tcp://0.0.0.0:3000
discourse_1_f60e0e3f1186 | [358] * Daemonizing...
docker-compose-discourse_discourse_1_f60e0e3f1186 exited with code 0
Es extraño que haya argumentos, instrucciones y variables de entorno para estas cosas, pero que en realidad no se respeten. Es difícil saber en qué debo confiar.
¿Por qué no puedo ejecutar un entorno de producción y usarlo para desarrollo? ¿Y qué hace Sidekiq? ¿Debería ejecutarse solo para iniciar la aplicación? Por ejemplo, tengo otro contenedor (con la misma base) con un comando de inicio:
bundle exec sidekiq
Y depende del contenedor principal de Discourse (migrando la base de datos, precompilando recursos estáticos, etc.). Todo parece funcionar, pero no hay aplicación web.
Estoy dispuesto a dedicar mucho (más) tiempo a esto, siempre que no haya empezado nada todavía, pero necesito una solución que no requiera que instale una base de datos en mi servidor. Con los contenedores, no deberíamos tener que hacer eso. Y, una vez más, la aplicación de compose aquí GitHub - vsoch/discourse-compose: docker-compose with discourse · GitHub parece estar funcionando (no hay errores en ningún registro), pero no hay ninguna aplicación.
Tienes razón, pero supongamos que de todos modos estoy haciendo la precompilación (¡tarda un buen rato!) y quiero iniciar el servidor. ¿Por qué no funciona?
De acuerdo, me rendí y ejecuté el comando --init. Puedo confirmar que el contenedor está en ejecución:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d2254e1374f5 discourse/discourse_dev:release "/sbin/boot" 24 minutes ago Up 24 minutes 0.0.0.0:1080->1080/tcp, 0.0.0.0:3000->3000/tcp, 0.0.0.0:9292->9292/tcp, 0.0.0.0:9405->9405/tcp discourse_dev
Sin embargo, no veo ningún registro de él en ningún puerto. He probado con dos navegadores, localhost, 127.0.0.1 y 0.0.0.0, pero no hay ninguna aplicación web. El error es ERR_CONNECTION_RESET. No veo nada en iptables que pueda bloquear esto:
Gracias a todos por su ayuda: el problema era necesario ejecutar ese comando “unicorn”, y ahora tengo todo funcionando. También tuve que ejecutar rake admin:create en el comando de inicio, de lo contrario solicita una confirmación por correo electrónico (repositorio completo aquí). discourse_dev también funciona.