Instalação com Docker
4 minute read
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
- Docker com plugin Compose (
docker composev2). - Linux/mac: usuário no grupo docker ou usar
sudo. - 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
make docker-init- copia.env.docker(se faltar), constroi/sobe containers, instala composer, gera key, migra e faz storage:linkmake build- construir os contêineresmake key-generate- gerar a chave do app e adicioná-la ao .envmake composer-install- instalar dependências phpmake composer-update- atualizar dependências phpmake composer-dump-autoload- executar o dump-autoload do composer dentro do contêinermake migrate- criar ou atualizar o banco de dadosmake drop-migrate- apaga a base de dados e migra novamentemake seed-odb- popular o banco de dados com localizações e táxons
Comandos para acessar os contêineres docker
make start- iniciar todos os contêineresmake stop- parar todos os contêineresmake restart- reiniciar todos os contêineresmake ssh- entrar no contêiner principal da aplicação laravelmake ssh-mysql- entrar no contêiner mysql, para que você possa acessar o log do banco de dados usandomysql -uUSER -pPWDmake mysql- entrar no console docker do mysqlmake ssh-nginx- entrar no contêiner nginxmake ssh-supervisord- entrar no contêiner supervisord
Comandos de manutenção
make optimize- limpar caches e arquivos de logmake info- mostrar informações do appmake logs- mostrar logs do laravelmake logs-mysql- mostrar logs do mysqlmake logs-nginx- mostrar logs do nginxmake 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.
- Atualize o código-fonte para a versão desejada:
cd opendatabio
git fetch --tags
git checkout <tag-ou-branch-de-destino>
- Reconstrua e reinicie os contêineres:
make stop
make build
make start
- Atualize dependências PHP e rode as migrações:
make composer-install
make migrate
- 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.