Instalação com Docker

Como instalar usando Docker!

A maneira mais fácil de instalar e executar o OpenDataBio é usando o Docker e os arquivos de configuração do docker fornecidos, que contêm todas as configurações necessárias para executar o ODB. Usa nginx e mysql e supervisor.

Perfil de produção

O OpenDataBio agora inclui um perfil Docker orientado a produção:

  • docker/prod/nginx.conf
  • docker/prod/php.ini
  • docker/prod/www.conf
  • docker-compose.prod.yml

Execute o compose de produção com:

docker compose -f docker-compose.prod.yml build
docker compose -f docker-compose.prod.yml up -d

Principais diferenças em relação ao dev:

  1. Usa configurações nginx/php-fpm em docker/prod/*.
  2. Remove bind-mounts do código-fonte da aplicação.
  3. Desativa o phpMyAdmin por padrão (perfil dev-only).
  4. Publica o nginx na porta 80 (ajuste se houver reverse proxy).

O CSP no nginx (report-only) está incluído em docker/prod/nginx.conf. Mantenha report-only primeiro e só depois aplique enforcement.

Arquivos Docker incluídos

laravel-app/
----docker/*
----.env.docker
----docker-compose.yml
----Dockerfile
----Makefile

Eles foram adaptados deste link, onde você também encontra uma configuração de produção.

Instalação


Baixar OpenDataBio

Pré-requisitos

  1. Docker com plugin Compose (docker compose v2).
  2. Linux/mac: usuário no grupo docker ou usar sudo.
  3. Windows: Docker Desktop (WSL2/Hyper-V habilitados).

Início rápido (Linux/mac, requer make)

cd opendatabio
make docker-init          # copia .env.docker se faltar, sobe containers, instala composer, gera key, migra e faz storage:link
make seed-odb             # seed opcional para Locations/Taxons
#ou tudo junto
make docker-init SEED=1   # igual acima + seed opcional para Locations/Taxons
  • Depois de configurar o .env (ou sempre que ASSET_URL mudar), recompile os assets:
npm run build
  • App: http://localhost:8081 (usuário admin@example.org / password1)
  • phpMyAdmin: http://localhost:8082

Windows (PowerShell)

cd opendatabio
powershell -ExecutionPolicy Bypass -File scripts/docker-init.ps1
# opcional seed
powershell -ExecutionPolicy Bypass -File scripts/docker-init.ps1 -Seed

Comandos manuais (se você não tiver make)

cp .env.docker .env
docker compose up -d
docker compose exec -T -u www-data laravel composer install --optimize-autoloader
docker compose exec -T -u www-data laravel php artisan key:generate --force
docker compose exec -T -u www-data laravel php artisan migrate --force
docker compose exec -T -u www-data laravel php artisan storage:link

Seed opcional sem make:

docker compose exec -T -u www-data laravel php getseeds
docker exec -i odb_mysql mysql -uroot -psecret odbdocker < storage/Location*.sql
docker exec -i odb_mysql mysql -uroot -psecret odbdocker < storage/Taxon*.sql
rm storage/Location*.sql storage/Taxon*.sql

Persistência de dados

Os contêineres criados pelo Docker podem ser excluídos e recriados sem perder os dados As tabelas MySQL são armazenadas em um volume; se ele for apagado, a base de dados será excluída.

docker volume list

Usando

O arquivo Makefile contém os seguintes comandos para interagir com os contêineres do docker e o odb.

Comandos para construir e criar o app

  1. make docker-init - copia .env.docker (se faltar), constroi/sobe containers, instala composer, gera key, migra e faz storage:link
  2. make build - construir os contêineres
  3. make key-generate - gerar a chave do app e adicioná-la ao .env
  4. make composer-install - instalar dependências php
  5. make composer-update - atualizar dependências php
  6. make composer-dump-autoload - executar o dump-autoload do composer dentro do contêiner
  7. make migrate - criar ou atualizar o banco de dados
  8. make drop-migrate - apaga a base de dados e migra novamente
  9. make seed-odb - popular o banco de dados com localizações e táxons

Comandos para acessar os contêineres docker

  1. make start - iniciar todos os contêineres
  2. make stop - parar todos os contêineres
  3. make restart - reiniciar todos os contêineres
  4. make ssh - entrar no contêiner principal da aplicação laravel
  5. make ssh-mysql - entrar no contêiner mysql, para que você possa acessar o log do banco de dados usando mysql -uUSER -pPWD
  6. make mysql - entrar no console docker do mysql
  7. make ssh-nginx - entrar no contêiner nginx
  8. make ssh-supervisord - entrar no contêiner supervisord

Comandos de manutenção

  1. make optimize - limpar caches e arquivos de log
  2. make info - mostrar informações do app
  3. make logs - mostrar logs do laravel
  4. make logs-mysql - mostrar logs do mysql
  5. make logs-nginx - mostrar logs do nginx
  6. make logs-supervisord - mostrar logs do supervisord

Recriando os containers

Se você tiver problemas e alterou os arquivos do docker, pode ser necessário reconstruir:

#apaga todas as imagens sem apagr a base de dados
make stop #pare todas
docker system prune -a  #aceitar com Yes

#se quiser pagar os dados
docker volume list
docker volume rm VOLUME_ID

#construa novamente
make build
make start

Atualizando uma instalação Docker existente

Antes de atualizar, faça backup do banco de dados e de storage/app/public/media. Antes de rodar os comandos, revise diferencas de configuracao da versao alvo:

  • Compare .env com .env.example (incluindo assets_url)
  • Confira configuracoes PHP do perfil alvo (docker/prod/php.ini ou seu arquivo customizado)
  • Confira configuracao do Supervisor (docker/supervisord.conf ou equivalente no seu deploy)
  1. Atualize o código-fonte para a versão desejada:
cd opendatabio
git fetch --tags
git checkout <tag-ou-branch-de-destino>
  1. Reconstrua e reinicie os contêineres:
make stop
make build
make start
  1. Atualize dependências PHP e rode as migrações:
make composer-install
make migrate
  1. Recompile os assets frontend apos mudancas no .env:
npm run build
  1. Atualize os caches do Laravel e reinicie os workers de fila:
make optimize
docker compose exec -T -u www-data laravel php artisan queue:restart

Se a nova versão incluir mudanças no .env, adicione as novas chaves antes de rodar assets/cache/restart em produção.

Última modificação March 11, 2026: Added upgrade instructions (9485e7e)