Django Heroku Docker Container registory and runtime を使ってみる。再トライ!
概要
Django Heroku Docker Container registory and runtime を使ってみる。再トライ!
参考サイト
やってみた
Dockerfileをalpinehelloworldを元に、修正してみる。
Dockerfile
#Grab the latest alpine image FROM alpine:latest # Install python and pip RUN apk add --update python py-pip bash postgresql-client postgresql-dev gcc musl-dev python3-dev python-dev ADD requirements.txt /tmp/requirements.txt # Install dependencies RUN pip install -r /tmp/requirements.txt # Add our code ADD . /opt/webapp/ WORKDIR /opt/webapp # Expose is NOT supported by Heroku # EXPOSE 5000 # Run the image as a non-root user RUN adduser -D myuser USER myuser # Run the app. CMD is required to run on Heroku # $PORT is set by Heroku CMD gunicorn --bind 0.0.0.0:$PORT gettingstarted.wsgi
- postgresql-dev gcc musl-dev python3-dev python-dev これはpsycopg2 を入れるために必要だった。alpineは軽量な分、pip installで必要なファイルが入ってないことが多いので、難しいなぁ。。。
とりあえず、これでbuildしてみる。ちなみに、python-getting-started というherokuのdjangoのチュートリアルのファイルをそのまま使っている。
$ docker build -t herokutest ./
無事buildできた!!よかった〜。
次にこれでlocalで動くか確認してみる。これは、docker run -p 5000:5000 -e PORT=5000 <image-name>
で確認できる。herokuの公式サイトを参照。
$ docker run -p 5000:5000 -e PORT=5000 herokutest
localhost:5000
にアクセスすると表示された!よかった〜。
次は、これをubuntuに修正してみる。なぜなら、anaconda3は、debianベースのものを使う予定のため。
alpine->ubuntuにかえてみる。
Dockerfile
#Grab the latest alpine image FROM ubuntu:latest # Install python and pip RUN apt-get update && apt-get install -y --no-install-recommends postgresql-client python-pip build-essential libpq-dev python-dev ADD requirements.txt /usr/src/app/requirements.txt # Install dependencies RUN pip install setuptools RUN pip install -r /usr/src/app/requirements.txt # Add our code ADD . /usr/src/app/ WORKDIR /usr/src/app # Expose is NOT supported by Heroku # EXPOSE 5000 # Run the image as a non-root user RUN useradd -m myuser USER myuser # Run the app. CMD is required to run on Heroku # $PORT is set by Heroku CMD gunicorn --bind 0.0.0.0:$PORT gettingstarted.wsgi
Errorでまくったので、最終的に上記のようなパッケージをinstallした。buildしてみる。
docker build -t ubuntutest ./
buildは無事完了!
$ docker run -p 5000:5000 -e PORT=5000 ubuntutest
とりあえず、localでは無事起動!これをherokuにpushしてみる!
herokuにpushしてみる。
$ heroku container:login $ heroku create ubuntudjangotest $ heroku container:push web --app ubuntudjangotest $ heroku open --app ubuntudjangotest
よっしゃ動いた!!
あとは、このDockerfileのFROM ubuntu
を、anaconda3に変えるだけかな!性格には、anaconda3(FROM ubutu)か。