@ykzts go言語を発表したてのGoogle I/O (たぶん2011年、もしかしたら2013年)でRob Pikeさんに、go言語のマスコットはどうしてプロトコルの名前なの?って訊ねたことがあります。残念ながらどんな回答をもらったか忘れちゃったのだけど、gopher (プロトコル)はもちろん知ってるよ、とのことでした。何か理由があってわざわざ同じ名前にしたんだよな…
@ykzts go言語を発表したてのGoogle I/O (たぶん2011年、もしかしたら2013年)でRob Pikeさんに、go言語のマスコットはどうしてプロトコルの名前なの?って訊ねたことがあります。残念ながらどんな回答をもらったか忘れちゃったのだけど、gopher (プロトコル)はもちろん知ってるよ、とのことでした。何か理由があってわざわざ同じ名前にしたんだよな…
Heroku脳で
$ docker-compose run --rm web bash
してなかなか起動しないのにどきどきしている
[FATAL tini (121)] Executing child process 'bash' failed: 'No such file or directory'
がっはっは
$ docker-compose run --rm web ruby -v
Starting mastodon_redis_1 ... done
Starting mastodon_db_1 ... done
Creating mastodon user (UID : 991 and GID : 991)...
Updating permissions...
Executing process...
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux-musl]
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
Dockerの内外で使ってるruby違うんだね
@hatabowyou うひゃー。むっちゃ関係あります。指定のバージョンのRubyを使う必要があります。手元ではrbenvというソフトにruby-buildというプラグインを入れて2.4.1にしてました。
このDockerの外でいちどrakeが走るようにする手順はrake secretを実行するために必要だと思うのですが、もしかしたらrake secretを実行しないで`ナントカ_SECRE`を適当な文字列にしておいて、いきなりdocker-compose buildをしてもいいんじゃないかと思い始めてます (dockerよくわからないし未確認ですが…
@hatabowyou https://github.com/bundler/bundler/issues/5655#issuecomment-301455330 でruby -vが2.4.1になると思うのですが…。うーむむ
Dockerでビルドする最小の手順を探してみようかな
Ubuntu 17.04に追加で入れてあるパッケージ:
- build-essential
- ccache
- golang-1.8-go
- heroku
- libpq-dev
- libreadline-dev
- libssl-dev
- mailutils
- nodejs
- pkg-config
- postfix
- vim.nox
- w3m
- zlib1g-dev
- https://get.docker.com からdocker-engine
- https://github.com/docker/compose/releases/download/1.13.0 からdocker-composeバイナリ
v1.4.xのMastodonをbundle installするのに必要なprotobuf-compiler libprotobuf-devと依存パッケージは消しておいてみる。
git cloneしたレポジトリは
$ git clean -dxf
で掃除しておいてhttps://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Docker-Guide.md を見ながら最初のrake secretを省けるか試そう。
念のため .ruby-version で指定されているrbenvのrubyも消しておく
$ rbenv uninstall 2.4.1
rbenv用のPATHも消して、
$ which ruby
/usr/bin/ruby
$ ruby -v
ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]
$ git checkout v1.4.1
$ cp .env.production.sample .env.production
このファイルは編集しないで、えいやっと:
$ docker-compose build
:
Successfully tagged gargron/mastodon:latest
できるじゃん。
$ vi .env.production
して、
PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=
のそれぞれの行の最後に、
docker-compose run --rm web rake secret
をそれぞれ実行して表示された長い16進数をコピペする。
んで、
$ docker-compose run --rm web rake db:migrate
$ docker-compose run --rm web rake assets:precompile
$ docker-compose up
これで http://<作業マシン>:3000/ にアクセスできるようになりました(httpsにリダイレクトされて終了する)。
.env.productionでLOCAL_HTTPS=falseにして docker-compose upすればリダイレクトは起きない。
@hatabowyou bundle exec rake specの実行をしないでDockerのイメージを作る段階まで行けそうです:
$ cp .env.production.sample .env.production
(編集はしない)
$ docker-compose build
.env.productionを編集して
PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=
の各行に、
$ docker-compose run --rm web rake secret
をそれぞれ実行して表示された長い16進数をコピペする。
$ docker-compose run --rm web rake db:migrate
$ docker-compose run --rm web rake assets:precompile
んで、.env.productionのLOCAL_HTTPS=で始まる行をLOCAL_HTTPS=falseにして
$ docker-compose up
すれば http://<作業マシン>:3000 が文字
というわけでDocker大変そうだなあ、と思っていた印象の一部はビルド手順をよく読まないとコンテナ外でbundle installを済ませないといけないように見えるのが原因な気がしてきました。これでちょっと良くなるといいな https://github.com/tootsuite/documentation/pull/287