Я выполняю рефакторинг приложения Angular для переключения с архитектуры виртуальной машины на контейнеры Docker.
При создании контейнера для Angular я придумал Dockerfile для использования в качестве компоновщика в многоступенчатой сборке.Я работал как шарм на моем Mac, поэтому я отправил его в github нашей компании, чтобы его использовали мои коллеги.
Проблема возникает, когда коллега вытащил из репо и попытался собрать на своем Mac (разные моделино более-менее сравнимо, у меня 2015, у него 2016, на котором работает Mojave).
Это содержимое файла dockerfile, который содержит ошибку:
# base image
FROM node:9.6.1 as builder
# install chrome for protractor tests
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
RUN apt-get update
RUN apt-get install -y software-properties-common
RUN add-apt-repository -y ppa:fontforge/fontforge
RUN apt-get install -y google-chrome-stable
RUN apt-get install -y fontforge ttfautohint gettext
Я предполагалон собирается нормально, как на моем ноутбуке, но когда он пытается запустить сборку, он получает некоторые ошибки на шаге RUN apt-get update
Контейнер получает 404 при попытке обновить systemd и завершает работу.
Мы также попытались раскрутить новый контейнер из того же образа docker run --rm -it node:9.6.1 /bin/bash
и скопировать все инструкции вручную в командной строке, и все заработало нормально.
1.Почему два разных результата на двух очень похожих, но все же разных машинах?
Весь смысл докер-контейнеров должен заключаться в абстрагировании среды и создании автономных сред для ваших приложений, так почему одни и те же чертежи Dockerfile отлично работают на моей машине ине по своему?Также демон-докер работает нормально и запускает контейнер, у нас возникает проблема при обновлении системы внутри сборки контейнера.
2.Почему на той же машине сборка Dockerfile завершается неудачно, а те же шаги выполняются успешно, если запускаться вручную?
Это полностью взорвало мой разум, я даже могу понять проблему двух разных машин, но не могу найти логического объясненияthis: одни и те же команды, подаваемые в командную строку, работают, если они не выполняются через скрипт.