LoginSignup
28
25

More than 5 years have passed since last update.

DockerでHerokuに近い環境を再現しつつDockerのImageをslugにして公開するまでのメモ

Last updated at Posted at 2015-05-05

HerokuがDockerに対応したようです。
ためした時、若干ハマったのでメモします。

環境

MacOSX
Docker: 1.6.0
Heroku client: 3.35.0

事前にDocker-machineでローカルに環境を構築済み

インストール

Dockerのpluginをインストールします。

$ heroku plugins:install heroku-docker

使い方

適当なディレクトリにプロジェクトをcloneします。
すでに自分がやってるプロジェクトがあるならそっちを使ってもいいかもしれませんね。

$ git clone https://github.com/heroku/node-js-getting-started.git
$ cd node-js-getting-started.git

以下のコマンドでDockerfileを作ります。

$ heroku docker:init

ただ自動生成されたDockerfileではnpm installでパーミッションエラーが出るのとpackage.jsonがキャッシュされないので修正を加えます。

Dockerfile
FROM heroku/cedar:14

RUN useradd -d /app -m app
+ RUN chown app:app -R /app
USER app
WORKDIR /app

ENV HOME /app
ENV NODE_ENGINE 0.12.2
ENV PORT 3000

RUN mkdir -p /app/heroku/node
RUN curl -s https://s3pository.heroku.com/node/v$NODE_ENGINE/node-v$NODE_ENGINE-linux-x64.tar.gz | tar --strip-components=1 -xz -C /app/heroku/node
ENV PATH /app/heroku/node/bin:$PATH

RUN mkdir -p /app/.profile.d
RUN echo "export PATH=\"/app/heroku/node/bin:/app/bin:/app/node_modules/.bin:\$PATH\"" > /app/.profile.d/nodejs.sh
RUN echo "cd /app/src" >> /app/.profile.d/nodejs.sh

EXPOSE 3000

ONBUILD RUN mkdir -p /app/src
- ONBUILD COPY . /app/src
ONBUILD WORKDIR /app/src
+ ONBUILD COPY package.json /app/src/package.json
ONBUILD RUN npm install
+ ONBUILD COPY . /app/src

次のコマンドでbuildと実行をします。

$ heroku docker:start

ローカルサーバーをブラウザで見てHelloWorldと出てくればとりあえずOKです。

公開

以下のコマンドでherokuのアプリを作ります。

$ heroku create

そして以下のコマンドでDocker imageからslugを作りdeployします。

$ heroku docker:release

そのまま$ heroku openで確認してHello WorldとでればOKです。

気になったのはgit pushせずにdeployなんだなーと行った感じです。
最近herokuをちゃんと勉強しだしたのでよくわかってないんですが...

まとめ

環境によるのか$ heroku docker:execが使えなかったりしました
どうしても必要なら$ docker execでいいと思いますが。

一番気になるのはAdd-oneとかの連携はブログに書かれてなかったので
それをどうするかですね

たぶんdocker-composeと連携させる方法でいいのではないかと思うのですが
もしかしたらheroku側でその辺をサポートするかもしれないので様子見です。

試せたらメモしておきます。

とりあえずHerokuの実行環境に近い環境で試せるというのはまぁまぁメリットかなと思います。

参考

28
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
25