Docker

【Docker】Dockerfileの書き方

Dockerfileからイメージを作成

Dockerfileからイメージを作成するには、buildコマンドを使用します。

“-t” オプションでイメージ名を自分でつけることができます。

$ docker build -t [生成するイメージ名]:[タグ名] [Dockerfileの場所]

Dockerfileの命令一覧

コマンド・デーモン実行系

RUN
CMD
・ENTRYPOINT
・ONBUILD
・STOPSIGNAL
・HEALTHCHECK

RUN

Dockerfile内の記述を逐一実行する際に使用します。

shell形式exec形式の2つがあります。

CMD

コンテナ作成時、起動時に実行するデフォルトのコマンドを指定します。

コンテナを起動するコマンドを実行する際に、コマンドを指定することで上書きできます。

環境・ネットワーク設定系

ENV
WORKDIR
・USER
・LABEL
・EXPOSE
・ARG
・SHELL

ENV

環境変数を指定します。

WORKDIR

Dockerfileに書かれた命令を実行する場所を指定します。

つまり、CMDを実行する場所になります。

コンテナを起動時の初期位置にもなります。

ファイル操作系

・ADD
・COPY
・VOLUME

Dockerfileからコンテナを起動してみる

Djangoを起動するDockerfile

まずは、ディレクトリ構造を確認しておきましょう。

/configとmanage.pyは、あらかじめdjango-adminコマンドでプロジェクトを作成しておきます。

djangoProject
├── Dockerfile
├── config
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── db.sqlite3
├── manage.py
└── requirements.txt

requirements.txt

コンテナ内で使用するライブラリを記述しておきます。

-i https://pypi.org/simple
django==2.2
pytz==2019.3
sqlparse==0.3.0

Dockerfile

FROM python:3.7
ENV PYTHONBUFFERED 1
RUN mkdir code
COPY . /code
WORKDIR /code
RUN pip3 install -r requirements.txt
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]

ENV PYTHONBUFFERED 1
→標準エラー出力をバッファに溜め込まない

COPY . /code
→カレントディレクトリの内容を/code内にコピー

WORKDIR /code
→Dockerfileの命令を実行する場所
→コンテナ起動時の初期位置

RUN pip3 install -r requirements.txt
→イメージ作成時に実行

CMD [“python3”, “manage.py”, “runserver”, “0.0.0.0:8000”]
→コンテナ起動時に実行されるコマンドをデフォルトで設定

イメージを作成

$ docker build -t django:new .

以下のコマンドで確認

$ docker images

コンテナを起動・作成

$ docker run -it -p 8000:8000 -v [ホスト側のパス]:/code –name django django:new

-vオプションでホスト側のパスを指定する際は、/Users〜の絶対パスを指定する必要がある。

コンテナが起動しているか確認

$ docker ps

コンテナを停止

$ docker stop django

コンテナを再起動

$ docker start django

COMMENT

メールアドレスが公開されることはありません。