Docker上でHanamiを動かす
GASHOO Inc. Advent Calendar 2017土曜日担当、23日目を飾ります、t-kusakabeです。 いよいよ僕の担当は最後です。頑張っていきます。
Hanamiをくじらの上で。
今回はGashooでも使われている、Docker上でHanamiを動かすということをしようと思います。 まだまだHanami & Dockerの記事がそんなにないので手順をまとめて見ました。 Docker。便利ですよね。
まずはDockerをinstall
Mac OSの方は以下のリンクからDLしてください。 Docker for Mac
Docker for MacだとDockerもdocker-composeもinstallできるので便利ですね。
まずはHanamiのスケルトンを作る
なにはともあれ hanami new
です
hanami new hanami_on_docker
Hanamiのスケルトンが出来ました。
. ├── Dockerfile ├── Gemfile ├── README.md ├── Rakefile ├── apps ├── config ├── config.ru ├── db ├── lib ├── public └── spec
Dockerfileを書く
ではDockerfileを書いていきます。 今回はRubyの2.4.2、ベースイメージにalpineを使おうと思います。
FROM ruby:2.4.2-alpine ARG APP_ROOT=/home/hanami_on_docker WORKDIR $APP_ROOT RUN apk update && \ apk add \ build-base \ curl-dev \ libxml2-dev \ libxslt-dev \ linux-headers \ mysql-dev \ nodejs \ ruby-dev \ tzdata \ yaml \ yaml-dev COPY . $APP_ROOT RUN gem install bundler && \ bundle install
/home以下にアプリケーションを置いてその中でgemをinstallします。 本的に必要になるライブラリだけ入れていますが、他にも必要なものがある場合は適宜追加してください。 (RMagickをつかっているのならImageMagickなど)
docker-compose.ymlを書く
次にdocker-compose.ymlを作成します。 DBにはMySQLを使おうと思います。
version: '3' services: app: build: . container_name: "hanami_on_docker" ports: - "2300:2300" command: bundle exec hanami server --host 0.0.0.0 volumes: - .:/home/gashoo_admin depends_on: - db tty: true stdin_open: true db: image: mysql:5.7 container_name: "mysql" ports: - "3306:3306" volumes: - mysql-data:/var/lib/mysql environment: MYSQL_ALLOW_EMPTY_PASSWORD: "yes" volumes: mysql-data:
buildしてみる
それではbuildしてみましょう。
docker-compose build
docker images
で、 hanamiondocker
というコンテナが出来て入ればOKです。
コンテナを起動してみる
それでは最後にコンテナを起動してみましょう。
docker-compose up
localhost:2300 にアクセスしてHanamiのトップ画面が表示されて入れば成功です!