Files
lgcosta 9bc5de4c56 feat: aplicação inicial — gerenciador de notas web estilo Mousepad
- Backend Go: API REST, auth por token (Bearer + cookie HttpOnly), storage em disco
  com revisões content-addressed (estilo Git: hash, autor, data, diff, restauração)
- Editor txt/md/html com preview, tags #tag, categorias, painel de histórico
- Preferências: números de linha, marcador de coluna (padrão 80), quebra de linha,
  fonte/tamanho, 4 temas e colorização de sintaxe (overlay no textarea)
- Frontend vanilla embutido via go:embed; Dockerfile multi-stage + docker-compose
2026-11-04 09:41:46 -03:00

34 lines
1.0 KiB
Docker

# syntax=docker/dockerfile:1
# ---------------------------------------------------------------------------
# Estágio 1: compila o binário estático (sem CGO) com o frontend embutido.
# ---------------------------------------------------------------------------
FROM golang:1.24-alpine AS build
WORKDIR /src
# Dependências primeiro, para aproveitar o cache de camadas.
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/notas ./cmd/notas \
&& mkdir -p /out/data \
&& chown -R 65534:65534 /out/data
# ---------------------------------------------------------------------------
# Estágio 2: imagem final mínima (scratch), apenas o binário + diretório de dados.
# ---------------------------------------------------------------------------
FROM scratch
COPY --from=build /out/notas /notas
COPY --from=build --chown=65534:65534 /out/data /data
USER 65534:65534
EXPOSE 8080
ENV NOTES_DATA_DIR=/data \
NOTES_ADDR=:8080
VOLUME /data
ENTRYPOINT ["/notas"]