この記事は最終更新日から1年以上が経過しています。
dockerのアプリをホスティングする環境を探していたら
HerokuでdockerのPrivate Registryを作れるようになっていたので試してみました。
https://devcenter.heroku.com/articles/container-registry-and-runtime
今回は単純なPythonのWebアプリなので以下のようなDockerfileを作成。
FROM python:3.6 ADD . /app WORKDIR /app/ RUN pip install -r requirements.txt ENTRYPOINT ["python", "manage.py", "runserver", "--host", "0.0.0.0", "--port", $PORT] |
brew upgrade でherokuコマンドラインツールを最新にしてからアプリをデプロイしてみます。
heroku container:push web でbuildからpushまでまとめてやってくれるので簡単でした。
$ brew upgrade heroku $ heroku container:login Login Succeeded $ heroku create Creating app... done, ⬢ hogehoge-fugafuga-123456 https://hogehoge-fugafuga-123456.herokuapp.com/ | https://git.heroku.com/hogehoge-fugafuga-123456.git $ heroku container:push web === Building for web (/Users/y-matsuki/PycharmProjects/hoge/Dockerfile) Sending build context to Docker daemon 275.7MB Step 1/6 : FROM python:3.6 ---> 968120d8cbe8 ... |
push後、Webアプリを起動するときに以下のエラーが発生。
unsupported: Your Docker image must specify a `CMD` instruction. |
ドキュメントを読むと
ENTRYPOINT でなく
CMD を使用してくれということなので
Dockerfileを以下のように修正すると成功しました。
FROM python:3.6 ADD . /app WORKDIR /app/ RUN pip install -r requirements.txt #ENTRYPOINT ["python", "manage.py", "runserver", "--host", "0.0.0.0", "--port", $PORT] CMD python manage.py runserver --host 0.0.0.0 --port $PORT |
Herokuを無料で使っているとしばらくアクセスがないとスリープするのですが、
復帰した場合はイメージを立ち上げ直すのかコンテナ内のデータが消えていたので
用途によっては注意が必要かもです。
この記事を書いた人
最近書いた記事
- 2021.12.10React NativeでWallet風UIを実装する
- 2018.11.19Elasticsearchで簡単な検索とscoreを調整する方法
- 2018.10.05ECSをEC2からFargateに切り替える際の注意点
- 2018.09.12AKB48グループ映像倉庫のWeb版をリリースしました