Stack dockerizada do Access to Memory (AtoM) pronta para desenvolvimento e provas de conceito. O conteudo de ./src e montado dentro do container, permitindo editar o codigo no host enquanto os servicos de infraestrutura permanecem isolados.
docker-compose.ymlorquestra MySQL 8, Elasticsearch 7.17, Gearman, o servidor web AtoM (atom) e um worker separado para filas (atom-worker).- O container principal roda Nginx + PHP 8.3 via Supervisord e executa
symfony tools:installautomaticamente na primeira subida quandoAUTO_INSTALL=1. - Volumes nomeados preservam banco, indice de busca, cache e uploads entre recriacoes de containers.
- Docker 24+ e Docker Compose Plugin v2.
- Pelo menos 6 GB de RAM disponivel (Elasticsearch exige ~2 GB dedicados) e 2 CPUs.
- Porta 8080 livre no host.
docker-compose.yml: definicoes dos servicos, healthchecks e volumes persistentes.Dockerfile: imagem baseada em Ubuntu 24.04 com PHP 8.3, Nginx e Supervisord.docker/entrypoint.sh: aguarda dependencias, dispara instalacao inicial e aplica permissoes.docker/nginx-atom.conf: virtual host que entrega PHP viaphp-fpme arquivos estaticos com cache.docker/supervisord.conf: inicia Nginx e PHP-FPM no mesmo container.src/: copia do codigo AtoM (bind mount). Nenhum artefato e copiado para a imagem durante o build.
| Servico | Porta host | Descricao |
|---|---|---|
mysql |
n/a | MySQL 8.0 com autenticacao mysql_native_password. Volume mysql_data. |
elasticsearch |
9200 | Cluster single-node usado pelas pesquisas do AtoM. Volume es_data. |
gearman |
4730 | Broker de filas para tarefas assinc. |
atom |
8080->80 | Nginx + PHP-FPM servindo a aplicacao web. Monta ./src e volumes atom_cache/atom_uploads. |
atom-worker |
n/a | Roda symfony jobs:worker continuamente. Compartilha os mesmos volumes de codigo/cache/uploads. |
- Copie as variaveis padrao:
cp .env.example .enve ajuste conforme necessario (URLs, credenciais externas etc.). Atente-se para que as credenciais do banco sejam as mesmas utilizadas no AtoM (ex.:MYSQL_USER=atomeATOM_DB_USER=atom). - Construa a imagem local (necessario apenas na primeira vez ou quando o Dockerfile mudar):
docker compose build atom atom-worker. - Suba toda a stack:
docker compose up -d. Se preferir fazer build + subida em um unico passo, basta rodardocker compose up -d --build. - Acompanhe os logs iniciais:
docker compose logs -f atomate verInstalacao concluida.(primeira subida) ouDB ja inicializado. - Acesse
http://localhost:8080. O URL publico tambem e controlado pela variavelATOM_URL.
Observacao: a instalacao automatica ocorre somente quando o schema
atomnao contem tabelas. Se desejar reexecutar, apague o volumemysql_dataou rode manualmentedocker compose exec atom php symfony tools:installapos limpar o banco.
- Na interface web do AtoM logue como administrador (default: usuario
lucasrodrigues@ibict.bre senhalucas) e siga os passos: - Altere o idioma padrao para portugues clicando no icone de planeta no canto superior direito e selecionando
Português.
- Codigo vivo: edite qualquer arquivo em
src/e suas mudancas aparecem imediatamente dentro dos containers. - CLI do Symfony: use
docker compose exec atom php symfony <comando>(ex.:search:populate,cache:clear). - Tarefas assinc: o container
atom-workere dependente doatome reusa as variaveis do.env. Se precisar rodar um job isolado, utilizedocker compose run --rm atom php symfony jobs:worker --trace. - Assets front-end: existem scripts em
src/package.json. Executedocker compose exec atom npm installenpm run dev/buildconforme o fluxo do projeto.
mysql_data: armazena o banco AtoM.es_data: indice do Elasticsearch.atom_cache: cache Symfony e artefatos temporarios.atom_uploads: anexos enviados pelos usuarios.
Para backup local rapido: docker run --rm -v mysql_data:/volume -v $(pwd):/backup alpine tar czf /backup/mysql_data.tar.gz -C /volume . (repita para outros volumes). Sempre desligue os containers antes de copiar arquivos de dados.
ATOM_DB_*: host, nome, usuario e senha do MySQL (default:mysql,atom,root,rootpass).ATOM_ES_HOST: host do Elasticsearch (defaultelasticsearch).ATOM_GEARMAN_HOST: host do Gearman (defaultgearman).ATOM_URL: URL externa usada pelo AtoM para gerar links absolutos.AUTO_INSTALL: definido emdocker-compose.ymlparaatom. Quando1, disparasymfony tools:installse nao houver tabelas no banco.
Qualquer variavel do .env fica disponivel tanto no container atom quanto no atom-worker.
- Ver logs em tempo real:
docker compose logs -f atom(oumysql,elasticsearch,atom-worker). - Atualizar codigo: execute
git pullno host e reiniciedocker compose up -d atom atom-worker. - Recriar somente os containers de aplicacao apos alterar dependencias PHP/JS:
docker compose up -d --build atom atom-worker. - Parar todo o ambiente:
docker compose down(usa-vapenas se quiser descartar dados). - Limpar caches manualmente:
docker compose exec atom php symfony cc.
reset.sh: reset parcial. Para os containers, remove os volumesmysql_data,es_dataeatom_cache(mantematom_uploads) e sobe tudo novamente comdocker compose up -d --build. Utilize quando quiser reinstalar banco e indices sem perder uploads.reset-atom.sh: reset total. Solicita confirmacao digitandosim, derruba os containers, remove todos os volumes (incluindo uploads) e religa o ambiente. Ideal para voltar ao estado zero; apos o procedimento osymfony tools:installroda automaticamente.- Ambos os scripts devem possuir permissao de execucao (
chmod +x scripts/*.sh) e podem ser executados a partir da raiz do projeto.
- MySQL nunca fica healthy: valide se outra instancia esta usando a porta 3306 no host; verifique
docker compose logs mysqlpara mensagens de permissao no volumemysql_data. - Elasticsearch reinicia por falta de memoria: reduza o uso local ou edite
ES_JAVA_OPTSemdocker-compose.yml(ex.:-Xms512m -Xmx512m). - Worker parado: confirme que
atom-workerestaUpcomdocker compose ps. Se necessario, reinicie apenas ele comdocker compose restart atom-worker. - Permissoes quebradas em uploads: rode
docker compose exec atom chown -R www-data:www-data /var/www/atom/uploads.
Pode acontecer alguns erros na instalação automática dependendo do ambiente. Recomenda-se que na primeira instalação a pasta src seja copiada diretamente do repositório oficial do AtoM em: https://storage.accesstomemory.org/releases/atom-latest.tar.gz e descompactada na pasta src deste repositório.
- Documentacao oficial do AtoM: https://www.accesstomemory.org/en/docs/2.8/
- Guia do docker compose: https://docs.docker.com/compose/
- Lucas Rodrigues Costa - lucasrodrigues@ibict.br