Я работаю на удаленном сервере, где я обычно использую aws-azure-login:
aws-azure-login -p profile_name --mode cli --no-prompt --force-refresh
(У меня есть папка .aws в моей домашней папке с файлом конфигурации, содержащим конфигурацию для разных профилей).
Однако мне нужно запустить мою систему из контейнера Docker. На странице github говорится, что вы можете установить aws-azure-login, установив Nodejs и puppeteer, поэтому я создал этот Dockerfile:
FROM nvidia/cuda:11.3.0-cudnn8-runtime-ubuntu20.04
# disable potential manual input requiremnts during the installations (tzdata)
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update --fix-missing && \
apt install python3-pip -y && \
ln -sf /usr/bin/python3 /usr/bin/python && \
ln -sf /usr/bin/pip3 /usr/bin/pip
RUN python -m pip install --upgrade pip
# install Nodejs and puppeterr for aws-azure-login
RUN curl -fsSL https://deb.nodesource.com/setup_19.x | bash - && apt-get install -y nodejs
RUN npm --verbose i puppeteer
RUN npm install -g --verbose aws-azure-login --unsafe-perm
Я успешно собрал образ и запустил контейнер, смонтировав внутри него локальную папку .aws:
docker run -it --privileged --gpus all -v /home/username/.aws/:/root/.aws/ container_name
но если я попытаюсь использовать aws-azure-login из контейнера, я получу следующую ошибку:
Using AWS SAML endpoint https://signin.aws.amazon.com/saml
Error: Failed to launch the browser process!
/usr/lib/node_modules/aws-azure-login/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/chrome: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md
at onClose (/usr/lib/node_modules/aws-azure-login/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:241:20)
at Interface.<anonymous> (/usr/lib/node_modules/aws-azure-login/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:231:68)
at Interface.emit (node:events:525:35)
at Interface.emit (node:domain:489:12)
at Interface.close (node:internal/readline/interface:534:10)
at Socket.onend (node:internal/readline/interface:260:10)
at Socket.emit (node:events:525:35)
at Socket.emit (node:domain:489:12)
at endReadableNT (node:internal/streams/readable:1359:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
Любые предложения о том, как это исправить?
Если это может быть кому-то полезно, я смог исправить это, изменив файл Docker на это:
FROM nvidia/cuda:11.3.0-cudnn8-runtime-ubuntu20.04
# disable potential manual input requiremnts during the installations (tzdata)
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update --fix-missing && \
apt install python3-pip -y && \
ln -sf /usr/bin/python3 /usr/bin/python && \
ln -sf /usr/bin/pip3 /usr/bin/pip
RUN python -m pip install --upgrade pip
# starting with NodeJS version 15, when no WORKDIR is specified, npm install is executed in the root directory of
# the container, which results in errors
WORKDIR /usr/app
# install Nodejs and puppeterr for aws-azure-login
RUN curl -fsSL https://deb.nodesource.com/setup_19.x | bash - && apt-get install -y nodejs
# Install latest chrome dev package and fonts to support major charsets (Chinese, Japanese, Arabic, Hebrew, Thai and a few others)
# Note: this installs the necessary libs to make the bundled version of Chromium that Puppeteer
# installs, work.
RUN apt-get update \
&& apt-get install -y wget gnupg \
&& wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
&& sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
&& apt-get update \
&& apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
RUN npm --verbose i puppeteer
RUN npm install -g --verbose aws-azure-login --unsafe-perm