Installer Discourse pour le développement avec Docker

Hello,

I’m getting this error when trying to run d/boot_dev --init

Errno::EACCES: Permission denied @ dir_s_mkdir - tmp
/src/config/boot.rb:23:in `<top (required)>'
/src/config/application.rb:16:in `require'
/src/config/application.rb:16:in `<top (required)>'
/src/Rakefile:7:in `require'
/src/Rakefile:7:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
(See full trace by running task with --trace)

Any ideas on how I fix it? Tried searching for it everywhere but didn’t find any solutions.

Edit: fixed it by doing chmod -R 777 ~/discourse, but now I’m getting this error:

gifsicle worker: gifsicle not found; please provide proper binary or disable this worker (--no-gifsicle argument or :gifsicle => false through options)

2 « J'aime »

That is not an issue, we removed our usage recently, the warning is not a concern. Are you working against old Discourse code?

4 « J'aime »

Nope, it was the recent release. But I followed this DigitalOcean’s tutorial and it’s perfectly working now.

2 « J'aime »

How to use plugins in this kind of setup?
I am trying to follow Install Plugins in Discourse, but it mentions /var/discourse/containers/app.yml file, which does not exist in my discourse directory.

I’ve got building a discourse dev environment working and able to test my patch, but how do I get my patch into my production instance? I tried building base, and then ./launcher rebuild app --run-image discourse/base:build, but it doesn’t seem to result in a running Discourse instance.

Usually I get an error about the syslog group missing, but I commented that out, and still didn’t end up with a running site. And nothing of note in docker logs.

We don’t really document this kind of stuff, but you would generate a “diff” file, the git apply the diff in a hook after you clone the repo. app.yml supports hooks.

A quick-and-dirty solution for self hosted single container things is just to edit the code in place and run sv restart unicorn

2 « J'aime »

Not sure if this is the best place to ask about this problem but I’ve been unable to finish the Discourse installation using Docker on an Apple M1 computer.

After I run d/boot_dev --init all dependencies are installed without any apparent problem but once I get to the Migrating database step, it stays there consuming 100% of one of my cores and it doesn’t seem to move from there.

I tried logging in to the docker container and the bundle migrate task is running at 100% but no apparent activity on the posgresql process.

Any ideas would be very helpful!

1 « J'aime »

I think the virtualization support is really really new, not surprised it is a bit of an adventure.

@pmusaraj / @david any luck getting docker-dev working on m1?

5 « J'aime »

I haven’t tried it yet.

2 « J'aime »

If anyone is able to run Discourse using docker in a M1 Mac, please let me know. In the mean time, I’ll try to follow the other guide! Thank you!

1 « J'aime »

I tried briefly today, and got stuck at the same step as you, but with an error:

Invalid gemspec in [/usr/local/lib/ruby/gems/2.7.0/specifications/default/zlib-1.1.0.gemspec]: Malformed version number string specification_version
bundler: failed to load command: rake (/usr/local/bin/rake)

Yes, please do. There are multiple team members using Discourse on M1 (myself included) every day, so it works quite well!

Let us know if you run into any issues.

2 « J'aime »

Thank you very much for your time and help! At least I’m not the only one stuck with it.

Hi, i think we should make a description about the Ember-CLI here, and a shourcut for below command without enter into docker container.

And i can’t get it work by execute above commands into container, seems container didn’t expose the 4200 port.

Manual expose the port 4200 by edit d/boot_dev:
Screenshot from 2021-05-02 16-09-16

After reboot container I access localhost:4200 got this:

discourse@discourse:/tmp$ cat error.dump.cab4cc444229d44fc0fce2deb8695880.log 
=================================================================================

ENV Summary:

  TIME: Sun May 02 2021 08:01:12 GMT+0000 (Coordinated Universal Time)
  TITLE: ember
  ARGV:
  - /usr/bin/node
  - /src/app/assets/javascripts/node_modules/.bin/ember
  - server
  - --proxy
  - http://localhost:3000
  EXEC_PATH: /usr/bin/node
  TMPDIR: /tmp
  SHELL: /bin/bash
  PATH:
  - /tmp/yarn--1619942449179-0.1910991449592403
  - /src/app/assets/javascripts/discourse/node_modules/.bin
  - /home/discourse/.config/yarn/link/node_modules/.bin
  - /src/app/assets/javascripts/node_modules/.bin
  - /home/discourse/.yarn/bin
  - /usr/libexec/lib/node_modules/npm/bin/node-gyp-bin
  - /usr/lib/node_modules/npm/bin/node-gyp-bin
  - /usr/bin/node_modules/npm/bin/node-gyp-bin
  - /usr/local/sbin
  - /usr/local/bin
  - /usr/sbin
  - /usr/bin
  - /sbin
  - /bin
  PLATFORM: linux x64
  FREEMEM: 8603062272
  TOTALMEM: 41962496000
  UPTIME: 612639
  LOADAVG: 3.32177734375,2.19580078125,1.47900390625
  CPUS:
  - Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz - 3301
  - Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz - 3300
  - Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz - 3300
  - Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz - 3301
  ENDIANNESS: LE
  VERSIONS:
  - ares: 1.15.0
  - brotli: 1.0.7
  - cldr: 35.1
  - http_parser: 2.9.3
  - icu: 64.2
  - modules: 64
  - napi: 7
  - nghttp2: 1.41.0
  - node: 10.23.0
  - openssl: 1.1.1g
  - tz: 2019c
  - unicode: 12.1
  - uv: 1.34.2
  - v8: 6.8.275.32-node.59
  - zlib: 1.2.11

ERROR Summary:

  - broccoliBuilderErrorStack: [undefined]
  - code: ECONNREFUSED
  - codeFrame: [undefined]
  - errorMessage: connect ECONNREFUSED 127.0.0.1:3000
  - errorType: [undefined]
  - location:
    - column: [undefined]
    - file: [undefined]
    - line: [undefined]
  - message: connect ECONNREFUSED 127.0.0.1:3000
  - name: Error
  - nodeAnnotation: [undefined]
  - nodeName: [undefined]
  - originalErrorMessage: [undefined]
  - stack: Error: connect ECONNREFUSED 127.0.0.1:3000
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)

=================================================================================

After edit bin/ember-cli PORT to 3000 to 9292 all working.

Seems the ember-cli bash unable work with ENV["UNICORN_PORT"] .

1 « J'aime »

The Ember CLI is a new (and hard fought) development; @eviltrout should be able to comment on that soon.

3 « J'aime »

Yes this will have to be updated. In the meantime you can disable that by setting the NO_EMBER_CLI environment variable to 1.

5 « J'aime »

Probably obvious but could you clarify where you set the env variable @eviltrout ?

I tried in the d/unicorn file like this:

docker exec -it -u discourse:discourse discourse_dev /bin/bash -c "$CMD" -e NO_EMBER_CLI=1

…but that didn’t work (still getting " Ember CLI is Required in Development Mode" message at localhost:9292).

d/boot_dev -e NO_EMBER_CLI=1

I tried this today, and also ran into issues. The error I saw was because Docker’s architecture emulation doesn’t support inotify (which we use a lot in Discourse development). For now, I’ve added a warning to d/boot_dev when a non-x86_64 architecture is detected:

❯ d/boot_dev 
WARNING: Docker architecture is not x86_64.
Discourse development is unlikely to work using Docker's architecture emulation.
Please try a native development installation.

I’ve now added a d/ember-cli helper, and forwarded port 4200 by default. The info at the top of this topis has also been updated. Once you’ve updated, run d/rails s in one terminal, and d/ember-cli in another. I’ve also set NO_EMBER_CLI as one of the variables which is passed through to Docker, so that is available if needed.

6 « J'aime »

@david probs inconsequential but just FYI: The boot_dev script prints out a false error finding on the x86_64 check when I accidentally ran without Docker on…(but the ‘Is the docker daemon running’ part is right)…

WARNING: Docker architecture is not x86_64.
Discourse development is unlikely to work using Docker's architecture emulation.
Please try a native development installation.
  ...(snip)...
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
1 « J'aime »

Thanks for this image, and the super-clear instructions!

I got psql: error: FATAL: Peer authentication failed for user "postgres" when running d/boot_dev --init.

Although the pg_hba.conf in data/postgres/ had all the authentication methods set to “trust”, there was another one in /etc/postgresql/13/main/ which had the defaults (“peer” / “md5”).

I edited /etc/postgresql/13/main/pg_hba.conf, changed all the methods to trust, did d/shell and ran sv restart postgres to pick up the changes – and was able to continue by running d/bundle install; d/rake db:migrate RAILS_ENV=development; d/rake admin:create manually.

Leaving here in case it’s helpful for anyone else!

1 « J'aime »