内容へ移動
Cat Paw Software
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
docker-compose
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
<markdown> # 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 ``` ## ログの確認 ```sh 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-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 ``` ## compose.override.yaml `compose.override.yaml` というファイルを作成すると、compose.yamlの内容を上書きする。自分の環境だけで挙動を変えたい場合に使用すると良い。 こんなcompose.yamlがある時・・・ ```yaml services: nginx: image: nginx:1.25.3-alpine restart: always ports: - "80:80" - "443:443" volumnes: - ./docker/nginx/conf.d:/etc/nginx/conf.d - ./docker/nginx/html:/var/www/html ``` 以下のような`compose.override.yaml`を作成する ```yaml services: nginx: restart: "no" volumes: - ./htdocs:/var/www/html ports: - "8080:80" - "8443:443" ``` 以下の設定で起動される ```yaml services: nginx: image: nginx:1.25.3-alpine restart: no # 上書きされる ports: - "80:80" # マージされる - "443:443" - "8080:80" - "8443:443" volumnes: - ./docker/nginx/conf.d:/etc/nginx/conf.d - ./docker/nginx/html:/var/www/html # コンテナ側のパスが同一のものがあれば上書きされる ``` スカラー値は上書きされる、配列値はマージされる(よってportsを完全に上書きすることはできない、ただし、volumesはコンテナ側のパスが同一の値があれば上書きする) </markdown>
docker-compose.txt
· 最終更新:
2024/12/13 13:37
by
nullpon
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ