Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Многоэтапные сборки с контейнером

Системы быстро становятся очень большими, когда вы отправляете их полностью. Это включает в себя сборку и часто среду сборки и тестирования. Даже если извлечение файлов для отправки не представляет проблемы, это требует времени.

Контейнеры позволяют делать это автоматически.

Здесь у вас есть возможность определить несколько контейнеров в одном файле. Хорошим примером является веб-сайт, созданный на JavaScript и построенный с помощью Node.js.

Пример:

Node.js:~ 400 Мбайт — 600 Мбайт
Веб-сервер nginx:~ 20 Мбайт
Веб-сайт:~ 2 МБ

Вся система как контейнер занимает в общей сложности более 600 Мбайт, хотя необходимо только 22 Мбайта (веб-сервер + веб-сайт). Кроме того, существует риск безопасности системы, поскольку присутствует программное обеспечение, которое не нужно для продуктивной работы. Решением здесь является многоэтапная сборка.

При многоступенчатой ​​сборке несколько контейнеров определяются в одном файле, а затем передаются только необходимые данные из одного контейнера в другой.

Пример многоэтапного dockerfile

Чтобы не отставать от Node.js, вот пример многоэтапной сборки. Первый контейнер содержит Node.js в качестве системы сборки, в нем создается сайт. Второй контейнер содержит веб-сервер, который после сборки копирует необходимые данные из первого контейнера.

## 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 с alpine.

Еще одним преимуществом является то, что вы можете получить доступ к двум готовым контейнерам сообщества и, следовательно, вам не нужно работать над их созданием и обслуживанием. Для системных обновлений контейнеры сообщества просто регулярно заменяются. Все это можно прекрасно автоматизировать в конвейере с помощью GitLab (или других инструментов).


Промышленные технологии

  1. Выбирайте облачные сервисы с умом, чтобы завоевать доверие лидеров бизнеса
  2. Арифметика с научной записью
  3. Вопросы и ответы с архитектором решений Индустрии 4.0
  4. Создайте свой первый IOT с помощью Raspberry Pi, датчика DHT11 и Thingspeak.
  5. Microsoft создает крупнейшую модель создания языка с 17 миллиардами параметров
  6. Как компании цепочки поставок могут строить дорожные карты с помощью ИИ
  7. Умные закупки уравновешивают ИИ с высоким интеллектом
  8. Контейнерные краны
  9. Контейнерные сборки для руки на x86
  10. Многоэтапные сборки с контейнером