Docker
A imagem oficial: multi-estágio, sem root, sem dependências.
docker run --rm -it estevan5s/dataforge replA imagem oficial está em hub.docker.com/r/estevan5s/dataforge. Ela é multi-estágio: as ferramentas de build ficam no primeiro estágio e não chegam à imagem final — o que se baixa é o interpretador, a biblioteca padrão e nada mais.
Rodar o seu arquivo#
docker run --rm -v "$PWD:/app" estevan5s/dataforge run main.dfO -v "$PWD:/app" monta a pasta atual em /app, que é o diretório de trabalho da imagem. Sem ele, o container não enxerga arquivo nenhum seu — é o esquecimento mais comum.
alias df-docker='docker run --rm -it -v "$PWD:/app" estevan5s/dataforge'
df-docker run main.df
df-docker check src/
df-docker replO que há dentro#
| Base | python:3.12-slim |
| Usuário | forge — não é root |
| Diretório | /app |
| Entrypoint | dataforge |
| Comando padrão | repl |
| Dependências | nenhuma além da stdlib do Python |
O entrypoint é o dataforge, então qualquer subcomando funciona — run, check, fmt, lint, test, big-o, init, new, repl.
Servidor web#
O Kiln escuta em 0.0.0.0 dentro do container. Em 127.0.0.1 ele ficaria inalcançável de fora — é o erro mais comum ao conteinerizar um servidor.
docker run --rm -p 8080:8080 -v "$PWD:/app" estevan5s/dataforge run app.df
curl localhost:8080Como imagem base#
FROM estevan5s/dataforge:1.0.0
WORKDIR /app
COPY forge.toml .
RUN dataforge install # resolve as dependências primeiro
COPY src/ ./src/
RUN dataforge check src/ --strict # o build falha se o código não passar
EXPOSE 8080
CMD ["run", "src/main.df"]No CI#
jobs:
verificar:
runs-on: ubuntu-latest
container: estevan5s/dataforge:1.0.0
steps:
- uses: actions/checkout@v4
- run: dataforge check src/ --strict
- run: dataforge fmt . --check
- run: dataforge test tests/Como o container já é o ambiente, não há passo de instalação — e a versão do interpretador fica presa na tag, então o CI de hoje roda igual daqui a um ano.
Etiquetas#
| Tag | O que é |
|---|---|
latest | a última versão estável |
1.0.0 | uma versão fixa — use esta em produção |
1.0 | a última correção da 1.0 |
Permissões#
O container não roda como root. Se os arquivos que ele cria aparecerem com dono errado na sua máquina, force o seu próprio usuário:
docker run --rm -u "$(id -u):$(id -g)" -v "$PWD:/app" \
estevan5s/dataforge run main.dfConstruir a sua#
git clone https://github.com/estevam5s/DataForge
cd DataForge
docker build -t dataforge .
docker run --rm -it dataforge repl