Docker: Não utilize bind mounts do Docker

Esta documentação faz parte do guia Volumes. Consulte o guia completo aqui: Como persistir os dados dos seus containers com volumes Docker.

Bem-vindo à documentação da Stackhero

A Stackhero disponibiliza uma plataforma Docker cloud CaaS (Containers as a Service) pronta a usar, concebida para implementações de contentores rápidas e fiáveis:

  • Implemente em produção com um simples docker-compose up. Não é necessária qualquer configuração adicional: basta iniciar os seus contentores.
  • Escolha o seu próprio nome de domínio, automaticamente protegido com HTTPS (por exemplo: https://api.sua-empresa.com, https://www.sua-empresa.com ou https://backoffice.sua-empresa.com).
  • Beneficie de elevado desempenho e segurança robusta numa infraestrutura privada e dedicada.
  • Aplique atualizações com um clique para uma manutenção simples e sem esforço.

Pode ter os seus contentores em produção em cerca de cinco minutos. A Stackhero gere a infraestrutura, as atualizações e a segurança por si, para que se possa focar na entrega das suas aplicações. Saiba mais sobre alojamento cloud Docker CaaS.

Não utilize bind mounts no Stackhero. Opte sempre por volumes Docker para evitar a perda de dados.

Os bind mounts envolvem ligar um diretório da VM host do Stackhero a um container. No entanto, se depender de bind mounts, atualizar a sua instância Stackhero for Docker resultará na perda de todos os dados armazenados desta forma.

Os bind mounts são geralmente especificados no comando docker run com uma sintaxe como -v /meuDiretório:/mnt (note o / inicial). Nos ficheiros Docker Compose, aparecem como volumes: /meuDiretório:/mnt. Proíba estas configurações ou perderá os seus dados.

Em vez disso, utilize volumes Docker, que são geridos pelo Docker e não referenciam caminhos absolutos.

Para resumir:

Abordagem incorreta:

docker run -it -v /meuDiretório:/mnt alpine

Abordagem correta:

docker volume create meuVolume
docker run -it -v meuVolume:/mnt alpine

Ao trabalhar com ficheiros Docker Compose:

Configuração incorreta:

services:
  meuServiço:
    image: alpine
    volumes:
      - /meuDiretório:/mnt

Configuração correta:

services:
  meuServiço:
    image: alpine
    volumes:
      - meuVolume:/mnt

volumes:
  meuVolume:
    name: meuVolume