Dockerの基本
build : Dockerfile + build context からイメージを作成する
ship : 作成したDocker Imageをレジストリ(Docker hub)を用いて他のhostへ配布する
run : Container ImageからContainerを実行する
DOCKERFILEとは
コンテナの作成手順書
build contextとは
コンテナに格納するプログラムなどのファイル群
Dockerの「コンテキスト」とは
docker buildコマンドを実行したときの、カレントなワーキングディレクトリのことを ビルドコンテキスト(build context)と呼びます。 デフォルトで Dockerfile は、カレントなワーキングディレクトリにあるものとみなされます。 ただしファイルフラグ(-f)を使って別のディレクトリとすることもできます。 Dockerfileが実際にどこにあったとしても、カレントディレクトリ配下にあるファイルやディレクトリの内容がすべて、ビルドコンテキストとして Docker デーモンに送られることになります。
Docker Composeとは
複数のコンテナで稼働するDockerアプリケーションを定義、実行するためのツール。例えばDjangoでWebサービスをDocker composeを用いて展開したい場合は以下のような設定を構築する
Dockerfile
FROM python:3.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
COPY . /code/
docker-compose.yml
version: '3.7'
volumes:
pgdata:
driver_opts:
type: none
device: $PWD/dbdata
o: bind
services:
nginx:
image: nginx
container_name: container.nginx
ports:
- "8000:8000"
volumes:
- ./nginx/conf:/etc/nginx/conf.d
- ./nginx/uwsgi_params:/etc/nginx/uwsgi_params
- ./src/static:/static
- ./nginx/log:/var/log/nginx
depends_on:
- web
web:
build: .
container_name: container.uwsgi
command: uwsgi --ini /code/mainproject/django.ini
volumes:
- ./src:/code
expose:
- "8001"
depends_on:
- db
db:
image: postgres
restart: always
container_name: container.postgres
ports:
- "5432:5432"
environment:
POSTGRES_DB: "postgresdb"
POSTGRES_USER: "admin"
POSTGRES_PASSWORD: "test"
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --locale=C"
volumes:
- pgdata:/var/lib/postgresql/data
hostname: postgres