Em termos gerais, Sails.js é um gerador de códigos JavaScript que entrega, em poucos minutos, um protótipo executável de uma Aplicação WEB do tipo backend robusta, segura e escalável. Diz-se backend porque todo o processamento ocorre do lado do servidor e depois disso é retornado ao navegador páginas HTML5 + CSS + JavaScript dinâmicas ao Cliente Web.
A versão final de sua Aplicação WEB precisará ser lançada em um servidor especial (ambiente de
produção)
que garanta sua execução com segurança e desempenho dignos. Uma forma de fazer isso é o lançamento Em
container Docker.
Docker é uma plataforma de software de código aberto que
permite implantar aplicativos dentro de containers virtuais. A conteinerização permite que vários aplicativos
funcionem em diferentes ambientes complexos. Por exemplo, o Docker permite executar o WordPress em sistemas
Windows, Linux e macOS, sem problemas. A tecnologia de container do Docker é mais leve e portátil do que as
máquinas virtuais. Embora o Docker e as máquinas virtuais tenham um propósito semelhante, seu desempenho,
portabilidade e suporte a sistemas operacionais diferem significativamente. O Docker é uma das
plataformas de containers mais populares sendo usada por muitas empresas para implantar aplicativos em
diferentes
sistemas.
Este passo-a-passo demonstra como utilizar o Docker como solução de Container em sincronia com as funcionalidades do Sails.js no backend.
Se esta é sua primeira vez aqui, recomendamos a leitura dos conteúdos abaixo antes de continuar:
O Dockerfile é um arquivo de texto simples que contém todas as instruções necessárias para criar uma imagem Docker. Com ele, você pode criar imagens personalizadas que contêm tudo o que seu aplicativo precisa para ser executado, incluindo o sistema operacional, bibliotecas, dependências e código do aplicativo. O Dockerfile é uma parte crucial do processo de criação de imagens Docker. É usado para automatizar a construção de imagens e garantir que as imagens resultantes sejam consistentes e facilmente replicáveis. Ou seja, trata-se de uma ferramenta poderosa que permite aos desenvolvedores criar e gerenciar imagens personalizadas do Docker de forma fácil e eficiente.
Dockerfile
, sem nenhuma
extensão.
# Este arquivo Dockerfile foi preparado para construcao de # uma imagem de container Docker (https://docs.docker.com/guides/get-started/) # pronta para execucao de uma aplicacao Sails.js (https://www.sails.js) # em ambiente de producao. # Atenção! Estamos considerando que tu tens conhecimento minimo para: # a) Instalar um servico Docker no computador; # b) Executar o comando docker pull node:versao # c) Executar o comando $docker build -t . # d) Executar o comando $docker run -d -p 80:80 --ip localhost [image_id da imagem gerada] # Antes de executar este Dockerfile, certifique-se de que: # 1) no arquivo config/env/production.js do Protótipo Sails criado, já foi autorizado o acesso: # onlyAllowOrigins: [ # 'http://localhost', <-- endereco final do app em producao # ], # # 2) no arquivo config/env/production.js, já foi definida a porta 80: # # port: 80, # # 3) no arquivo config/env/production.js ou no config/custom.js, já foi definido # explicitamente o endereco base: # custom: { # baseUrl: 'http://localhost', <-- endereco final do app em producao # internalEmailAddress: 'support@example.com', # ... # # # A escolha da imagem Docker deve ser feita de acordo com a versao # do Node.js que o desenvolvedor utilizou quando o app foi criado, # pois toda a definicao de bibliotecas constante do aquivo package.json # durante a criacao do prototipo dependeu disso. # Para saber qual versao do Node.js foi utilizada pelo 'motor gerador' # do codigo, localize, no arquivo package.json, a seguinte entrada: # "engines": { # "node": "^16.15" <-- versao do Node.js utilizada para instalacao # } # # Para instalar a imagem mais atualizada... # FROM registry.ccarj.intraer/mirror/library/node:lts-alpine AS build # Para instalar a imagem compativel com a versao de 'geracao' do app # FROM node:16.15.1 AS build FROM node:16.15.1 AS build # Definicao do diretorio de trabalho WORKDIR /usr/local/app # Transferencia do codigo fonte para a imagem COPY ./ /usr/local/app/ # Instalacao de todas as dependencias RUN npm install # Atribuicao de permissoes de execucao USER node COPY . . COPY --chown=node:node . . # Exposicao da porta 80 EXPOSE 80:80 # Execucao em ambiente de producao ENV NODE_ENV=production CMD [ "node", "./app.js" ]
docker build -t sails .
docker images
. Tú deves visualizar algo
como:
sails latest ece424c79462 About a minute ago 1.28GB <none> <none> 013a26c1f25a 36 minutes ago 1.28GB <none> <none> c8155314f684 2 hours ago 1.28GB <none> <none> 2d0b6c440655 2 hours ago 1.28GB <none> <none> f794fe671dc1 2 hours ago 1.28GB <none> <none> 3a00a11c6562 3 hours ago 1.29GB <none> <none> e7d9d17bbb88 3 hours ago 1.29GB <none> <none> fa5014bfabe8 3 hours ago 1.29GB <none> <none> 29dc685bd58b 3 hours ago 1.29GB mongo latest 9b10bdf158d5 3 weeks ago 757MB node 16.15.1 b9f398d30e45 18 months ago 907MB
docker run -d -p 80:80 [--ip meuendereco] <image_id da imagem gerada>
docker run -d -p 1337:80 sails new
.
http://localhost
(ou o endereço final que você definiu no
arquivo production.js) citado acima
Execute o Docker na AWS
A AWS oferece suporte para soluções comerciais e de código aberto do Docker. Existem várias maneiras de executar contêineres na AWS, incluindo o Amazon Elastic Container Service (ECS), que é um serviço de gerenciamento de contêiner altamente escalável e de alta performance. Os clientes podem implantar facilmente as aplicações conteinerizadas a partir do ambiente local do Docker diretamente no Amazon ECS. O AWS Fargate é uma tecnologia para o Amazon ECS que permite executar contêineres em produção sem implantar ou gerenciar a infraestrutura. O Amazon Elastic Container Service for Kubernetes (EKS) facilita a execução do Kubernetes na AWS. O AWS Fargate é uma tecnologia para o Amazon ECS que permite executar contêineres sem provisionar ou gerenciar servidores. O Amazon Elastic Container Registry (ECR) é um repositório privado de contêineres altamente disponível e seguro que facilita o armazenamento e o gerenciamento de imagens do contêiner do Docker, criptografando e compactando imagens em repouso, para que sejam fáceis de capturar e proteger. O AWS Batch permite executar cargas de trabalho de processamento em lote altamente escaláveis usando contêineres do Docker.
Cloud Build
O Cloud Build é um serviço que executa suas versões no Google Cloud.
O Cloud Build pode importar o código-fonte de uma variedade de repositórios ou espaços do Cloud Storage,
executar uma versão para suas especificações e produzir artefatos como contêineres Docker ou
arquivos Java.
Serviço de Kubernet da Azure (AKS)
O Serviço de Kubernetes do Azure (AKS) oferece a maneira mais rápida de começar a desenvolver e implantar aplicativos nativos de nuvem no Azure, em datacenters ou na borda com pipelines internos do código para a nuvem e verificadores de integridade. Obtenha gerenciamento e governança unificados para clusters do Kubernetes locais, de borda e multinuvem. Interopere com os serviços de segurança, identidade, gerenciamento de custos e migração do Azure.
Heroku Sailsforce
O Serviço Heroku da Sailsforce oferece duas formas de realizar lançamento de software com Docker: