Plugin Docker de volumes: clona repositórios Git (privados via SSH) para o Compose
21
Plugin Docker (volume driver) que clona repositórios Git como volumes. Declara o repositório directamente no docker-compose.yml e o Docker trata do clone e das actualizações.
services:
web:
image: nginx:alpine
ports: ["8080:80"]
volumes:
- APP:/usr/share/nginx/html:ro
volumes:
APP:
driver: st693ava/docker-git-volume:0.2.0
driver_opts:
repo: "owner/website"
branch: "main"
path: "public" # opcional: só esta subpasta do repositório
Publica-se uma tag por arquitectura (0.2.0-amd64 e 0.2.0-arm64). O --alias dá ao driver o mesmo nome em todas as máquinas:
ARCH=$(docker info --format '{{.Architecture}}' | sed 's/x86_64/amd64/; s/aarch64/arm64/')
docker plugin install st693ava/docker-git-volume:0.2.0-$ARCH \
--alias st693ava/docker-git-volume:0.2.0 --grant-all-permissions
Para repositórios privados, aponta o plugin para o directório .ssh do host (ver abaixo):
docker plugin install st693ava/docker-git-volume:0.2.0-$ARCH \
--alias st693ava/docker-git-volume:0.2.0 --grant-all-permissions \
ssh.source=$HOME/.ssh
O plugin corre sem capabilities adicionais e não precisa de directórios no host.
driver_opts)| Opção | Default | Descrição |
|---|---|---|
repo | — | owner/nome (GitHub) ou host/owner/nome (ex.: gitlab.com/owner/nome) |
url | — | URL completo, em alternativa a repo (https://…, ssh://…, user@host:caminho) |
branch / tag / commit | branch por defeito do repo | Versão a clonar (só uma delas). commit aceita hash completo ou abreviado |
ref | — | Alternativa genérica a branch/tag/commit |
path | raiz do repositório | Subpasta a expor como volume. O .git nunca fica visível |
depth | 1 | Profundidade do clone (0 para clone completo) |
pull_on_mount | true | Actualizar em cada mount (nunca enquanto outro container usa o volume) |
Indica repo ou url. Opções desconhecidas ou inválidas são rejeitadas logo no docker volume create.
O plugin corre isolado, por isso não vê o ~/.ssh do host. O mount ssh (só de leitura) disponibiliza-o:
# num plugin já instalado
docker plugin disable st693ava/docker-git-volume:0.2.0
docker plugin set st693ava/docker-git-volume:0.2.0 ssh.source=/caminho/para/.ssh
docker plugin enable st693ava/docker-git-volume:0.2.0
id_* (sem .pub) do directório, copiadas para um directório temporário com permissões 0600 só durante cada operação git. O ssh_config do host não é lido.GIT_PROTOCOL=auto (defeito), repo: owner/nome usa SSH se houver chaves e HTTPS caso contrário./Users).Definem-se com docker plugin set (com o plugin desactivado):
| Variável | Default | Descrição |
|---|---|---|
GIT_HOST | github.com | Host usado por repo: owner/nome |
GIT_PROTOCOL | auto | auto, ssh ou https |
GIT_TIMEOUT | 10m | Timeout de cada operação git |
LOG_LEVEL | info | debug, info, warn ou error |
depth baixo em repositórios grandes.docker compose down -v).url (ficam em texto simples no estado do plugin e no .git/config). Prefere SSH.https, http, ssh e git.Licença: MIT.
Content type
Plugin
Digest
sha256:688ae52a8…
Size
14 MB
Last updated
4 days ago
docker plugin install st693ava/docker-git-volume:0.2.0-amd64