[Docker-compose] 基本

Composeの定義内でイメージが置かれるディレクトリとDockerfile名を指定すれば、docker-composeコマンドの発行時にDockerfileによるビルドも自動で実施する

$ tree
.
├── app
│   ├── Dockerfile
│   └── src
│   └── server.py
├── docker-compose.yml
└── web
├── Dockerfile
└── html
└── index.html

./web/Dockerfile

From nginx:1.17.5-alpine
COPY ./html/ /usr/share/nginx/html/
CMD["nginx", "-g", "daemon off;"]

./docker-compose.yml

version: '3.3'
services:
  app:
    build:
      context: ./app
      dockerfile: Dockerfile
    ports:
    - 8081:80
  web:
    build:
      context: ./web
      dockerfile: Dockerfile
    image: c5dev1_nginx
    container_name: c5dev1_nginx
    ports:
    - 8080:80

build: でビルドする
image: がイメージ名
サービス名とイメージのリソースを置くディレクトリ名を統一する方が良い

$ sudo docker-compose build

bindで動作検証して、OKだったら、ビルドする

version: '3.7'
services:
  web:
    build:
      context: ./web
      dockerfile: dockerfile
    depends_on:
      - app
    ports:
      - 8080:80
    environment:
      APP_SERVER: http://app:80
  app:
    build:
      context: ./app
      dockerfile: Dockerfile
    depends_on:
      - db
    environment:
      REDIS_HOST: db
      REDIS_PORT: 6379
      REDIS_DB: 0
  db:
    image: redis:5.0.6-alpine3.10
    volumes:
      - c5kvs_redis_volume:/data
volumes:
  c5kvs_redis_volume:
    driver: local