tl;dr:
- Traefik grabs the first port it sees, which on the dev image is 1080- we want port 9292. Use
--label=traefik.http.routers.discourse-dev.port=9292
- You need to set a dev host using en env var in the container:
-e DISCOURSE_DEV_HOSTS=your_dev_hostname \
With the dev version of Discourse working, I wanted to let its connectivity be managed by the traefik proxy. But whichever way I sliced it, I would get a Bad Gateway
error. The usual suspect for this is not setting a port, or having the service on a different network from traefik itself. However, this issue persisted for me.
I had to add the following to (discourse_source_root)/bin/docker/boot_dev
, in the docker run ...
section:
--network=traefik_default \
--label=traefik.port=80 \
--label=traefik.docker.network=traefik_default \
--label=traefik.http.routers.discourse-dev.rule=Host\(\`$DEVHOST\`\) \
--label=traefik.http.services.discourse-dev.loadBalancer.server.port=9292 \
I set DEVHOST=<my dev host>
earlier in the file, or you can use the host there directly. The last line points traefik at the correct port (9292) in the discourse-dev container.
Accessing by host then produces a page with a blocked host error:
Blocked host: discourse_dev_host
To allow requests to discourse_dev_host, add the following to your environment configuration:
config.hosts << discourse_dev_host
Setting DISCOURSE_DEV_HOSTS
permits access on those hosts. We need to do this in the container, so add the following to the same section in the same file:
-e DISCOURSE_DEV_HOSTS=$DEVHOST \
Which permits access via that (or those) hostname(s).