やったこと
docker を使ってみます。
チュートリアルの Part2 です。
調査
Dockerfile の定義
コンテナで何をするのかということを定義します。
Dockerfile
# 公式 Python ランタイムを親イメージとして使用
FROM python:2.7-slim
# 作業ディレクトリを /app に設定
WORKDIR /app
# 現在のディレクトリの内容を、コンテナ内の /app にコピー
ADD . /app
# requirements.txt で指定された必要なパッケージを全てインストール
RUN pip install -r requirements.txt
# ポート 80 番をコンテナの外の世界でも利用可能に
EXPOSE 80
# 環境変数の定義
ENV NAME World
# コンテナ起動時に app.py を実行
CMD ["python", "app.py"]
※ 下記ファイルも必要ですが、参考サイトを見てください。
app.py
requirements.txt
Docker イメージを作成
$ docker build -t friendlyhello .
アプリケーションを起動する
$ docker run -p 4000:80 friendlyhello
$ curl http://localhost:4000
確認
実行中のコンテナID 2a2ef4f0bd30
の確認
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a2ef4f0bd30 friendlyhello "python app.py" 8 minutes ago Up 8 minutes 0.0.0.0:4000->80/tcp confident_tu
Docker Hub のイメージを利用する
Docker Hub のイメージを使い nginx を起動します。
$ docker pull nginx:latest
Dockerfile
FROM nginx:latest
# author
MAINTAINER hoge
ADD default.conf /etc/nginx/conf.d
RUN echo "now building..."
docker-compose.yml
version: '3'
services:
nginx:
build: .
ports:
- "8080:80"
volumes:
- ./public:/usr/share/nginx/html
設定ファイルを空で用意します
$ touch default.conf
コンテナ起動
$ docker-compose up
コンテナに入る
nginx_nginx_1
はコンテナ名です。
$ docker exec -i -t nginx_nginx_1 bash
設定ファイルは default.conf
と同じで空でした。
# cat /etc/nginx/conf.d/default.conf