Можно ли сделать определенные строки в архитектуре Dockerfile зависимыми? - PullRequest
0 голосов
/ 11 июня 2018

У меня есть Dockerfile, и мне нужно включить разные строки, в зависимости от того, запускаю ли я его в своей среде разработки или на Raspberry Pi.

Могу ли я добавить какой-либо зависимый от архитектуры оператор IF вокругтолько строки, которые меняются?

# x64 version (shortened)
FROM node:10

COPY Gemfile* /usr/src/app/

WORKDIR /usr/src/app

RUN apt-get -y update
RUN apt-get -y install build-essential g++

RUN echo 'deb http://deb.debian.org/debian stretch main' > /etc/apt/sources.list

RUN apt-get -y update
RUN apt-get -y install ruby2.3 ruby2.3-dev

Способный источник между архитектурами различается.

# ARM / Raspbian version.  (shortened)
FROM node:10

COPY Gemfile* /usr/src/app/

WORKDIR /usr/src/app

RUN apt-get -y update
RUN apt-get -y install build-essential g++

RUN wget https://archive.raspbian.org/raspbian.public.key -O - | apt-key add -
RUN echo 'deb http://archive.raspbian.org/raspbian/ stretch main' > /etc/apt/sources.list

RUN apt-get -y update
RUN apt-get -y install ruby2.3 ruby2.3-dev

1 Ответ

0 голосов
/ 11 июня 2018

В файле Docker вы можете использовать ARG определить параметр для вашего процесса сборки, как:

FROM node:10
ARG platform=x64

документация для него

вы можете назвать его какэто для изменения значения по умолчанию

docker build --build-arg platform=arm

, и внутри вашего файла Docker он ведет себя как любая другая переменная, так что вы можете, если на нем:

RUN if [ "$platform" = "arm" ]; then ... else ... fi 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...