LoginSignup
0
5

More than 3 years have passed since last update.

Dockerfile, docker-composeの書き方と解説

Last updated at Posted at 2021-01-07

はじめに

docker初心者の自分が同じようにdocker初心者の方向けに作成したものです。
Dockerfileやdocker-composeでよく使われている用語を抜粋してこの記事を書かせていただきました。皆さんの参考になれば幸いです。✊

対象者

  • Docker, docker-compose 初心者の方
  • ファイルの書き方を忘れてしまった方

Dockerfile とは

Dockerfile は、命令を取り込み自動的にイメージをビルドしてくれるテキストファイルである。pull しなくても自分で Dockerfile を書けば好きなようにイメージを作成することができる。

Dockerfile よく使われる命令解説(例付き)

FROM

Docker イメージを指定(ローカルにイメージがなくても勝手に作成する)

FROM python:3.7
ENV

環境変数(key, value)を設定する

ENV PYTHONUNBUFFERED 1
RUN

イメージ作成前にシェルを実行する

RUN mkdir /code
CMD

イメージ作成後にシェルを実行、複数用いても最後の 1 つだけ実行する

CMD python3 app.py
WORKDIR

docker コンテナ がコマンドを開始するディレクトリを指定

WORKDIR /usr/share/nginx/html
COPY

ホストからファイルを Docker イメージにコピー、圧縮ファイルの場合解凍されない

# /~/で囲うと絶対パス、無いとWORKDIRの相対パス
COPY index.html index.html
ADD

ホストからファイルを Docker イメージにコピー、圧縮ファイルの場合解凍される

# /~/で囲うと絶対パス、無いとWORKDIRの相対パス
ADD requirements.txt /code/
VOLUME

ホスト側のデータをマウントするディレクトリを指定

VOLUME /code


docker-compose とは

docker-compose は、YAML ファイルを使って複数のコンテナを定義し実行する Docker アプリケーションのためのツール。

docker-compose 解説(例付き)

サンプル

version: '3'

services:
    db:
        image: postgres
        container_name: docker_compose_postgres
        ports:
            - "5555"
        environment:
          - POSTGRES_DB=postgres
          - POSTGRES_USER=postgres
          - POSTGRES_PASSWORD=postgres
        networks:
          - docker_link

    web:
        build: .
        command: python3 manage.py runserver 0.0.0.0:8000
        volumes:
            - .:/code
        ports:
            - "8000:8000"
        depends_on:
            - db
        networks:
            - docker_link

    networks:
        docker_link:

  • version:docker-compose のバージョン
  • service:動かすアプリケーション
    • image:Docker イメージ指定
    • container_name:コンテナ名
    • ports:ホスト側とコンテナ側の両方のポートを指定だけでなく公開用のみも指定できる
    • environment:環境変数を追加
    • build:Dockerfile の存在するディレクトリを指定
    • command:デフォルトのコマンドを上書き
    • volumes:ホストのディレクトリをマウントするディレクトリを指定
    • depends_on:サービス間の依存関係を指定
    • networks:どのネットワークに接続するかを指定
  • networks:ネットワークの指定

参考にしたサイト

0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5