Self-host seu site deco

Version: 2

Deploy do site (Docker)

O estado e a configuração do sistema são totalmente definidos no sistema de arquivos. Assim, o estado do site é auto-contido no próprio sistema de arquivos, sem a necessidade de comunicação com sistemas externos por padrão. No entanto, o site pode acessar bancos de dados, serviços SaaS ou outros serviços web, conforme o código implementado pelo desenvolvedor, mas isso não é um requisito obrigatório do runtime da Deco.

Para facilitar o processo de deploy, oferecemos uma estratégia simples utilizando um Dockerfile.

Dockerfile

Para realizar o deploy em Docker, copie o código abaixo para um arquivo Dockerfile na raiz do seu projeto. É necessário configurar, no mínimo, a variável de ambiente ENV DECO_SITE_NAME para refletir o nome do seu site ou projeto.

FROM denoland/deno:alpine

# The port that your application listens to.
EXPOSE 8000

WORKDIR /app

RUN mkdir -p /home/deno && chown -R deno:deno /home/deno && mkdir /app/deno && chown -R deno:deno /app && mkdir -p /deno-dir && chown -R deno:deno /deno-dir

# Prefer not to run as root.
USER deno

# These steps will be re-run upon each file change in your working directory:
COPY --chown=deno:deno . deco

WORKDIR /app/deco

RUN echo -e 'import "$fresh/src/build/deps.ts";\nimport "$fresh/src/runtime/entrypoints/main.ts";\nimport "$fresh/src/runtime/entrypoints/deserializer.ts";\nimport "$fresh/src/runtime/entrypoints/signals.ts";' >> _docker_deps.ts

RUN deno cache --allow-import --frozen main.ts dev.ts _docker_deps.ts

ARG GIT_REVISION=1

ENV DECO_SITE_NAME=yoursitename

ENV DENO_DEPLOYMENT_ID=$GIT_REVISION

CMD ["run", "--cached-only", "-A", "--unstable-kv", "main.ts"]

Explicação do Dockerfile

Aqui estão alguns detalhes importantes sobre o Dockerfile acima, que podem precisar de personalização conforme o seu caso de uso:

  • FROM denoland/deno:alpine

    • Define a imagem base do Docker. Você pode especificar uma versão exata, como FROM denoland/deno:2.0.1.
  • EXPOSE 8000

    • Expõe a porta onde a aplicação estará disponível.
  • RUN echo -e ... >> _docker_deps.ts

    • Define as dependências que serão cacheadas para evitar a busca por pacotes externos durante a execução.
  • RUN deno cache --allow-import --frozen main.ts dev.ts _docker_deps.ts

    • Realiza o cache das dependências do projeto.
  • ARG GIT_REVISION=1

    • Permite definir um argumento de build para identificar revisões do projeto.
  • ENV DECO_SITE_NAME=yoursitename

    • Define uma variável de ambiente usada para identificar o site no runtime Deco.
  • ENV DENO_DEPLOYMENT_ID=$GIT_REVISION

    • Variável usada para gerenciar o cache dos assets do site, devendo ser alterada a cada novo build.
  • CMD ["run", "--cached-only", "-A", "--unstable-kv", "main.ts"]

    • Comando que executa o servidor com as permissões necessárias.

Deploy docker

Para criar a imagem Docker com base no seu projeto, execute o seguinte comando no diretório raiz:

  • docker build -t site_image .

Se necessário, você pode passar o argumento GIT_REVISION para identificar uma revisão específica do build:

  • docker build --build-arg GIT_REVISION=2 -t site_image .

Finalmente, crie e execute o container Docker:

  • docker run -p 8000:8000 --name site_container site_image

Com isso, seu site estará rodando em um container Docker, pronto para uso.

Was this page helpful?
Can't find what you're looking for? Spot an error in the documentation? Get in touch with us on our Community Forum
Continue reading