Pretty late at the party, but… here is my experience with docker on windows: (tl;dr: don’t work. yet)
- Last Windows 10 update allows you to run windows executables from bash (and probably viceversa)
- So in theory you only need to replace all
docker
commands withdocker.exe
. Yay! - Unfortunately, this won’t work though, because it seems that some paths are lost in translation. Nay!
/mnt/s/discourse$ ./bin/docker/boot_dev --init
Using source in: /mnt/s/discourse
Using data in: /mnt/s/discourse/data/postgres
e5cc992eb5220a72c28016ea4c41de0a78cb3a37278be5284956047df63a11f4
Installing gems...
unable to setup input stream: unable to set IO streams as raw terminal: The handle is invalid.
So I tried to get all boot_dev
commands converted to windows cmd (I’m assuming that the repo is cloned in s:\discourse
):
mkdir "s:\discourse\data\postgres"
docker run -d -p 1080:1080 -p 3000:3000 -v "s:\discourse\data\postgres:/shared/postgres_data:delegated" -v "s:\discourse:/src:delegated" --hostname=discourse --name=discourse_dev --restart=always discourse/discourse_dev:release /sbin/boot
docker exec -it -u discourse:discourse discourse_dev /bin/bash -c "cd /src && ls -la && RAILS_ENV=development bundle install"
Until this point, I don’t get any errors. Things looks good!
Let’s do the migration:
docker exec -it -u discourse:discourse discourse_dev /bin/bash -c "cd /src && RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 LD_PRELOAD=/usr/lib/libjemalloc.so RAILS_ENV=development bundle exec rake db:migrate"
rake aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Oh, no! Postgres is installed? Yes, it is! But for some reasons this is where i’m stuck. If I try to connect dirrectly fails, as the DB is not compatible:
λ postgres.exe --config-file=S:\discourse\data\postgres\postgresql.conf
2018-06-01 12:17:00.063 UTC [25588] LOG: listening on IPv6 address "::1", port 5432
2018-06-01 12:17:00.064 UTC [25588] LOG: listening on IPv4 address "127.0.0.1", port 5432
2018-06-01 12:17:00.073 UTC [25588] FATAL: database files are incompatible with server
2018-06-01 12:17:00.073 UTC [25588] DETAIL: The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL.
2018-06-01 12:17:00.073 UTC [25588] HINT: It looks like you need to recompile or initdb.
2018-06-01 12:17:00.076 UTC [25588] LOG: database system is shut down
So I assume my version isn’t compatible with Discourse.
λ postgres.exe --version
postgres (PostgreSQL) 10.4
(also tried with 9.x but I had pretty much the same result)
Other stuff:
postgresql.conf
have errors that are not compatible with Windows:
dynamic_shared_memory_type = posix # the default is the first option
lc_monetary = 'en_US.UTF-8' # locale for monetary formatting
lc_numeric = 'en_US.UTF-8' # locale for number formatting
lc_time = 'en_US.UTF-8' # locale for time formatting
So for now it’s a dead end for me. Maybe in the future i’ll have enough patience to go through all of these again, but today was enough