存储PLCNext社区 PLCNext. on LinkedInPLCNext. on Instagram  PLCNext. on YouTube  github plcnext社区  存储PLCNext社区

 

 如何创建博客条目

制造商博客
Hits: 320

用容器的多级建造

当您运送完成时,系统会很快变得非常大。这包括构建和通常构建和测试环境。即使提取要发货的文件不是问题,即使是问题,也是耗时的。

容器提供自动执行此操作的可能性。

 

在这里,您可以选择在一个文件中定义多个容器。在JavaScript中创建的网站并使用node.js构建是一个很好的例子。

例子:

node.js:〜400 MBYTE - 600 MB
WebServer nginx:〜20 MB
网站:〜2 MB

 

整个系统作为集装箱导致总共超过600 MB,尽管只需要22个MB(WebServer +网站)。此外,系统存在安全风险,因为存在软件,其不需要生产操作。这里的解决方案是一个多级构建。

在一个 multi-stage build 在一个文件中定义了几个容器,然后发送从一个容器到另一个容器的必要数据。

 

示例多级Dockerfile

 

要保持Node.js,这是一个多级构建示例。第一个容器包含Node.js作为构建系统,在其上创建网站。第二个容器包含Web服务器,它在构建后从第一个容器中复制必要的数据。

## 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;"]

 

结果是一个只包含最必要的小容器。我们使用非常小的Linux分发Nginx 高寒 .

另一个优点是您可以访问两位现成的社区容器,因此无法创建和维护它们。对于系统更新,社区容器只会定期更换。整个事情可以在带有Gitlab(或其他工具)的管道中非常自动化。