Nigrimmist
@Nigrimmist
Asp.net senior developer

Как использовать два Docker image?

Не силён в докере, поэтому вопрос скорее всего или концептуально неверный или очевидно-несложный, но всё же :

Кейс : есть aws lambda. AWS предоставляет docker image в котором можно запустить код на .net core :

FROM public.ecr.aws/lambda/dotnet:core3.1
WORKDIR /var/task
COPY "bin/Release/lambda-publish"  .


Я глянул внутрь имаджа - там from scratch +добавление каких-то бинарей и тп.

Проблема :
У меня есть рабочий код, который работает под .net image'ем с убунтой (там установлен ffmpeg и еще пару пакетов) :

mcr.microsoft.com/dotnet/runtime:3.1-bionic

Вопрос таков - могу ли я каким-то образом запустить оба image, или чтобы одни пакеты проаплаились на второй image?
Или вариант у меня только один - т.к. базовый image от aws мне трогать не желательно - нужно все остальные пакеты устанавливать самому через докерфайл (apt-get, ffmpeg и все прочие)? Или же всё таки как-то можно "по-умному" обернуть или "вложить" их какой-нибудь матрёшкой?
  • Вопрос задан
  • 197 просмотров
Пригласить эксперта
Ответы на вопрос 1
Viji
@Viji
DevOps Engineer
Сложновато будет с пакетами, два базовых images использовать можно, -смотри
https://stackoverflow.com/questions/33322103/multi...
https://docs.docker.com/develop/develop-images/mul...

но это чаще всего делается для того чтобы в первом образе откомпилить приложение, получить например длл, а потом его скопировать во второй образ, где оно собственно будет работать. Но... ты тут пишешь про Лямбда фунцию - образ aws Докер для .net 3.1 Лямбды - содержит .net 3.1 фреймворк и .net sdk (библиотеку) для работы с сервисами aws. Таким образом ты можешь откомпилить свой код в этом образе и сохранить его в zip file вместе с другими библиотеками, кот будет использоваться как исходный код для Лямба функции - можешь затем задеплоить этот зип коммандой

aws lambda update-function-code --function-name "$DST_LAMBDA_FUNCTION_NAME" --zip-file "fileb://$TMP_FILE_PATH" --publish

И если ты хочешь запускать свою Лямбду через Dockerimage - то возьмы базовую AWS base image for .NET 3.1 и в докерфайле добавь и установи остальные пакеты с помощью 1) добавления all package references to the project file 2) dotnet restore, - ты не сможешь использовать ffmpeg, если он не есть один из dotnet packages - Лямбда - не Докер контейнер.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы