ユーザ用ツール

サイト用ツール


docker-compose

文書の過去の版を表示しています。


<markdown> # 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ファイルを指定

  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> ```

あまり便利ではないので、dockerコマンドで見た方がいいかもしれない

## 疑似端末

`docker-compose`の`run`や`exec`コマンドは`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 ```

</markdow n>

docker-compose.1644887722.txt.gz · 最終更新: 2022/02/15 01:15 by nullpon