ユーザ用ツール

サイト用ツール


docker-compose

docker-compose

compose

docker-composeというコマンドは廃止され、dockerのサブコマンドとなりました

docker compose up

以下docker-composeコマンドはdocker composeに読み替える

サブコマンド

実行。サービス名なしの場合は全部立ち上げる。-dはバックグラウンド起動

docker-compose up [サービス名]
docker-compose up -d [サービス名]

ワンオフ実行(cliツールなどの起動)

docker-compose run --rm サービス名

imageのビルド(事前にビルドしなくてもup時になければビルドされる)

docker-compose build

現在のconfigを確認

docker-compose config

composeファイルを指定して実行(-fはサブコマンドより前に書く)

docker-compose -f path/to/compose1.yml -f path/to/compose2.yml up 

環境変数でcomposeファイルを指定

export COMPOSE_FILE=path/to/compose1.yml:path/to/compose2.yml
docker-compose up

起動中のコンテナにアタッチ

docker-compose exec サービス名 コマンド

nginxとphp-fpmを立ち上げる例

docker-compose.ymlを作成

version: '2'
services:
  php-fpm:
    image: php:7.2.10-fpm-alpine
    volumes:
      - ./htdocs:/var/www/html
  nginx:
    image: nginx:alpine
    ports:
      - 8080:80
    depends_on:
      - php-fpm
    volumes:
      - ./htdocs:/var/www/html
      - ./nginx/conf.d:/etc/nginx/conf.d

htdocs以下にinxex.phpを配置する。これが2つのコンテナ上では/var/www/htmlディレクトリになる

<?php phpinfo(); ?>

nginx/conf.d/default-vhost.conf を作成、dokuwikiを動かすならこんな感じ

server {
    listen 80;
    server_name _;
    root /var/www/html;
    index index.php;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location ~ \.php$ {
        fastcgi_pass php-fpm:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

初回起動

docker-compose up -d

http://localhost:8080/index.php でphpinfoが表示されたらOK

終了

docker-compose stop

起動

docker-compose start

Dockerfileを記述して独自imageビルドする例

serviceにbuildをつける

version: '3.7'

services:
  embulk:
    image: nyan/embulk
    build: ./docker/embulk

docker/embulk/Dockerfileを記述

FROM adoptopenjdk/openjdk8

RUN mkdir -p /opt/embulk/bin
RUN curl -o /opt/embulk/bin/embulk -L "https://dl.embulk.org/embulk-latest.jar"
RUN chmod +x /opt/embulk/bin/embulk

RUN /opt/embulk/bin/embulk gem install embulk-output-jdbc
RUN /opt/embulk/bin/embulk gem install embulk-output-postgresql

ENV PATH /opt/embulk/bin:$PATH

ビルド

docker-compose build

ログの確認

docker compose logs <service-name>

最後から行数を指定して取得

docker compose logs --tail 10 <service-name>

30分前、2時間前、2023-09-01 00:00:00 UTCからのログを見る

docker compose logs --since 30m <service-name>
docker compose logs --since 2h <service-name>

docker compose logs --since 2023-09-01T00:00:00Z <service-name>

ログを開きっぱなしにする

docker compose logs -f <service-name>

ログの時刻を表示する(ログ自身に時刻が表示されてない場合に便利)

docker compose logs -t <service-name>

疑似端末

docker-composerunexecコマンドはdockerコマンドとは逆にデフォルトで疑似端末が割り当てられる(docker run -t相当)

cronから起動する場合など、疑似端末を割り当てずにdocker-compose runを実行したい場合は -T オプションをつける

docker-compose run -T hogehoge

docker-composeで起動しているnginxのreloadをcronで実行したい場合などに必要

docker-compose exec -T <name_of_nginx_container> nginx -s reload
docker-compose.txt · 最終更新: 2023/09/11 15:06 by nullpon