Starting Discourse on a Specific Docker Network

AI-generated summary

The discussion revolves around starting a Discourse instance on a specific Docker network. dlynch158 had issues connecting a container to the desired network using the --docker-args option. After debugging with mpalmer, dlynch158 discovered the issue and found an alternative solution by specifying the Docker args in the web_only.yml file.

dlynch158 successfully connected to the desired network but encountered issues with Discourse. deargle shared their experience of getting a similar setup working and suggested that the --docker-args option should be merged with the $user_args variable in the launcher script. sam agreed that it was an oversight and encouraged deargle to send a pull request. deargle eventually submitted the pull request (PR #419).

I can run docker network connect squadwars web_only and then docker network inspect squadwars and see it connected to my squadwars network.

But if I do:

./launcher start web_only --docker-args=“–network squadwars” it doesn’t seem to connect itself to that network! (And yes I destroyed the container first).

I don’t see my options being passed to the docker run command.

Try running /bin/bash -x ./launcher <etc etc>, and trace where the --docker-args (and, subsequently, $user_args) gets set and used.

root@squadwars:/var/discourse# /bin/bash -x ./launcher start web_only --docker-args=“–network squadwars” 2>&1 | grep -C 15 args

  • command=start
  • config=web_only
  • user_args=
  • ‘[’ 3 -gt 0 ‘]’
  • case “${1}” in
  • shift 1
  • ‘[’ 2 -gt 0 ‘]’
  • case “${1}” in
  • shift 1
  • ‘[’ 1 -gt 0 ‘]’
  • case “${1}” in
  • shift 1
  • ‘[’ 0 -gt 0 ‘]’
    …
    ++ cat containers/web_only.yml
  • docker_args=

Not really sure how to interpret this but it doesn’t seem to be parsing the --docker-args option.

It looks like I can specify docker args in web_only.yml though, do you know the syntax for that?

Edit: Okay the syntax was really easy, just:

docker_args: “–network squadwars”

Now it’s working fine, thank you. (Still doesn’t work from commandline but I don’t care :))

Edit: Well the squadwars network is working fine, but discourse seems to be broken. I’m going to try to add it onto the host network as well, not sure if that works.

I just got this working with a web_only container, a data container, and nginx-proxy in front, all on the same user-defined network.

With the web_only template, the network needs to be specified in the user args on the command line because at least one of the lines that runs the base docker image does not include $docker_args, while that line does include $user_args.

Like: ./launcher rebuild web_only --docker-args '--network nginx-proxy'

I also had that set in docker_args: in web_only.yml:

docker_args:
  - '--network nginx-proxy'

I know this is an old topic, but google brought me here, and google knows all.

@mpalmer would it be not good to include $docker_args on L640?

Looks like on oversight to me, feel free to send through a PR

My holistic comprehension of launcher is weak, but I think that perhaps the cleanest thing would be to merge $user_args with $docker_args?

  • $user_args comes from the command-line flag --docker-args, and $docker_args comes from the config file yaml entry for docker_args:.
  • The $docker_args var is only used once in the entire launcher script (alongside $user_args, while $user_args is used in all run invocations that I see.

Does merging $user_args and $docker_args into one $user_args var sound okay?

PS happy anniversary!

Yeah it feels like both should be merged. I do not follow why we need 2 flavors for the same coke.

see merge docker_args with user_args for launcher file by deargle · Pull Request #419 · discourse/discourse_docker · GitHub, sorry for delay