Tenho uma instância do GitLab em um contêiner Docker em execução em um Synology NAS. Agora, quero mover o GitLab para um PC Windows que tenho, mas manter os dados no NAS, compartilhando pastas e tornando-as volumes Docker. Para testar, criei algumas pastas config
, data
, e logs
no NAS e as compartilhei na rede com "Shared Folder". Pelo que entendi, configuramos para usar SMB para isso. Então, na máquina Windows, executo (com base nesta sugestão)
docker volume create --driver local
--opt type=cifs
--opt device=//192.168.1.150/gitlab_docker_volume/config
--opt o=user=gitlab_docker_volume,password=<password> gitlab-config
e mais dois para criar gitlab-data
e gitlab-logs
.
Então, eu inicio o contêiner com
docker run -d -p 8070:80 -p 8433:443 -p 8012:22
-v gitlab-logs:/var/log/gitlab:rw
-v gitlab-data:/var/opt/gitlab:rw
-v gitlab-config:/etc/gitlab:rw gitlab/gitlab-ce
e trava com o erro
...
Mixlib::ShellOut::ShellCommandFailed:
Failed asserting that ownership of "/var/opt/gitlab/git-data" was git:git
...
2024-12-13 13:54:47 + [ root:root = git:git ]
Quando olho para as pastas no NAS, posso ver que o contêiner criou com sucesso todos os arquivos e pastas que o GitLab precisa, mas todos eles têm proprietário gitlab_docker_volume:users
e 777
permissões. No data
volume do contêiner GitLab original que está sendo executado no NAS, a git-data
pasta pertence a algum usuário misterioso 998
e tem 2770
permissões.
Se entendi corretamente, o que está acontecendo é que o contêiner do GitLab tenta acessar chown
a git-data
pasta e esse comando teria que ser mapeado no compartilhamento SMB/CIFS, mas isso não está acontecendo.
Há duas postagens sobre o mesmo erro, mas elas o encontraram usando configurações diferentes para seus volumes: uma delas parece ter o problema devido à execução do servidor Windows em uma VM, a outra está usando pastas nativas do Windows.
https://stackoverflow.com/questions/44684621/volume-trouble-with-gitlab-docker-image-on-windows
Também tentei descobrir como editar as permissões do Linux por meio do compartilhamento de rede em geral, mas os resultados da pesquisa estão inundados com "como definir as permissões ao criar as pastas para que o contêiner do Docker possa editá-las em primeiro lugar" - o que já estava funcionando na minha configuração.
Eu, por outro lado, tenho pastas compartilhadas que estão originalmente em uma máquina Linux. Existe alguma maneira de alterar a configuração de compartilhamento de pastas, a configuração de volume ou qualquer outra coisa, para que o contêiner possa alterar o usuário e as permissões dos arquivos? O Docker está sendo executado com o backend WSL, a propósito.