Если возможно запускать Docker команды из системы, подключенной к publi c Inte rnet, вы можете сделать это Docker родным способом, разделив ваше изображение на две части.
Первое изображение содержит только команды apk
, но не содержит фактического кода приложения.
FROM alpine
RUN apk add ...
Создайте этот образ docker build -t me/alpine-base
, подключенный к сети.
Теперь вы необходимо передать это изображение в изолированную среду. Если возможно подключить какую-либо систему к обеим сетям и запустить реестр Docker внутри среды, то вы можете использовать docker push
для отправки образа в изолированную среду. В противном случае это один из немногих случаев, когда вам потребуется docker save
: создать tar-файл изображения, переместить этот файл в изолированную среду (через хост-бастион, на USB-ключ, ...) и docker load
это в целевой системе.
Теперь у вас есть этот базовый образ в целевой системе, поэтому вы можете установить приложение поверх него, не вызывая apk
.
FROM me/alpine-base
WORKDIR /app
COPY . .
CMD ...
Это подход будет работать для любого артефакта. Если у вас есть что-то вроде package.json
/ requirements.txt
/ Gemfile
/ go.mod
, в котором перечислены все зависимости библиотеки приложения, вы можете заранее выполнить этап загрузки и установки, как это, но вы Вам нужно будет не забыть повторить это и вручную переместить обновленный базовый образ, если эти зависимости когда-либо изменятся.