Closed4

[Portainer] Stack作成時、Gitリポジトリ内のファイルを使いたい

Srgr0Srgr0

Portainerでは、Stackという機能(中身はdocker-compose)で複数のDockerコンテナをまとめることができる。
Stackでは、docker-compose.ymlなどの構成ファイルを含むGitリポジトリをpullしてきてStackを作成することが出来るのだが、以下のような一般的な構成で作成しようとしても出来ない。

docker-compose.yml
version: '3.1'
services:
  webapp:
    image: nginx:latest
    restart: always
    ports:
      - "3002:80"
    volumes:
      - ./static:/usr/share/nginx/html
Srgr0Srgr0

この原因は、PortainerがGitリポジトリを参照するときにデフォルトではdocker-compose.ymlファイルしか読み込まないことにある。
リポジトリ内にdocker-compose以外の構成ファイル(上の例では./static以下のファイル)があったとしても、それらは無視される。

Srgr0Srgr0

対応方法としては、Relative Path Supportを活用できる。
注意として、Portainer Community Edition(CE)ではRelative Path Supportはサポートされていないので注意。CEを使用している場合はBEにアップグレードするか、Portainer外でコンテナを作成する。docker-composeコマンドでコンテナ作成した場合、Portainer上では認識されるが一部機能が制限される。

Stack作成画面で Repository を選択すると Enable relative path volumes トグルがあるので、これを有効にする。 Local filesystem path でリポジトリのパスを指定する。
例えば以下のように /mnt/pt-git と指定すると、 /mnt/stacks/portainer-compose-unpacker/stacks/<<your-stack-name>>/ にリポジトリがCloneされる。docker-compose.ymlの変更などは必要なく、docker-composeコマンドを使用する場合と同様に相対パスでファイルを指定して使用できるようになる。

このスクラップは1ヶ月前にクローズされました