Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Tecnologia industrial

Builds de vários estágios com contêiner


Os sistemas rapidamente se tornam muito grandes quando você os envia completos. Isso inclui a compilação e, muitas vezes, o ambiente de compilação e teste. Mesmo que a extração dos arquivos a serem enviados não seja um problema, é demorado.

Os contêineres oferecem a possibilidade de fazer isso automaticamente.

Aqui você tem a opção de definir vários contêineres em um arquivo. Um site criado em JavaScript e construído com Node.js é um bom exemplo.

Exemplo:

Node.js:~ 400 Mbyte – 600 Mbyte
Nginx do servidor Web:~ 20 Mbyte
Site:~ 2 Mbyte

Todo o sistema como um container resulta em um total de mais de 600 Mbyte, embora apenas 22 Mbyte (servidor web + site) sejam necessários. Além disso, há um risco de segurança para o sistema porque está presente software, o que não é necessário para uma operação produtiva. Uma solução aqui é uma compilação em vários estágios.

Em uma compilação de vários estágios, vários contêineres são definidos em um arquivo e, em seguida, apenas os dados necessários de um contêiner para o outro são transmitidos.

Exemplo de arquivo docker de vários estágios


Para ficar com o Node.js, aqui está um exemplo de compilação de vários estágios. O primeiro container contém o Node.js como sistema de compilação, nele é criado o site. O segundo contêiner contém o servidor web, que copia os dados necessários do primeiro contêiner após a compilação.
## Base System Stage 1
## Use community Node.js container
FROM node:8.11.3 as buildsystem

## Add source from our Git project
COPY ./source /root/frontend

## Build frontend with Nodejs
WORKDIR /root/frontend/
RUN npm install \
&& npm run build

#####################################################################
#####################################################################

## Base System Stage 2
## Use community nginx container
FROM nginx:alpine 

## Copy build from stage 1
RUN mkdir -p /var/www/html/<MyApp>
COPY --from=buildsystem /root/frontend/dist/ /var/www/html/<MyApp>/

## Add default config for nginx
ADD default.conf /etc/nginx/conf.d/

## Publish Port
EXPOSE 80

## Start nginx
CMD ["nginx", "-g", "daemon off;"]

O resultado é um pequeno recipiente que contém apenas o mais necessário. Usamos uma distribuição Linux muito pequena para nginx com alpine.

Outra vantagem é que você pode acessar dois contêineres comunitários prontos e, portanto, não tem trabalho para criá-los e mantê-los. Para atualizações do sistema, os contêineres da comunidade são simplesmente substituídos regularmente. A coisa toda pode ser maravilhosamente automatizada em um pipeline com o GitLab (ou outras ferramentas).

Tecnologia industrial

  1. Escolha seus serviços em nuvem com sabedoria para construir a confiança dos líderes empresariais
  2. Aritmética com notação científica
  3. Perguntas e respostas com um arquiteto de soluções da indústria 4.0
  4. Crie sua primeira IOT com um Raspberry Pi, sensor DHT11 e Thingspeak.
  5. A Microsoft constrói o maior modelo de geração de linguagem com 17 bilhões de parâmetros
  6. Como as empresas da cadeia de suprimentos podem construir roteiros com IA
  7. Saldos de Aquisições Inteligentes AI com HI
  8. Guindastes para contêineres
  9. Builds de contêiner para arm em x86
  10. Builds de vários estágios com contêiner