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.

Arquivos Docker incluídos

laraverl-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
  • Os assets já estão versionados em public/build, então não é necessário rodar npm no Docker.
  • 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

As containers criados pelo Docker podem ser excluídos e regerados sem perder os dados As tabelas mysql são armazenadas em um volume, que se apagado irá excluir a base de dados completamente.

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.

  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. 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 reiniciar os workers em produção.

Última modificação February 20, 2026: Added upgrade instructions to docs (ba19280)