FROM public.ecr.aws/lambda/python:3.8.2023.03.29.13-x86_64 as build
RUN yum install -y unzip &&
curl -Lo "/tmp/chromedriver.zip" "https://chromedriver.storage.googleapis.com/112.0.5615.28/chromedriver_linux64.zip" &&
curl -Lo "/tmp/chrome-linux.zip" "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F1100514%2Fchrome-linux.zip?generation=1675363434858111&alt=media" &&
unzip /tmp/chromedriver.zip -d /opt/ &&
unzip /tmp/chrome-linux.zip -d /opt/
#FROM public.ecr.aws/lambda/python:3.8.2023.03.28.15
FROM public.ecr.aws/lambda/python:3.8.2023.03.29.13-x86_64
RUN yum install atk cups-libs gtk3 libXcomposite alsa-lib
libXcursor libXdamage libXext libXi libXrandr libXScrnSaver
libXtst pango at-spi2-atk libXt xorg-x11-server-Xvfb
xorg-x11-xauth dbus-glib dbus-glib-devel -y
RUN pip install --upgrade pip
RUN pip install requests
RUN pip install beautifulsoup4
# RUN pip install pymysql
RUN pip install selenium
COPY --from=build /opt/chrome-linux /opt/chrome
COPY --from=build /opt/chromedriver /opt/
COPY *.py ./
CMD [ "farmair_scraping.test_func" ]
我用cmd 构建了上面的代码[docker build——platform linux/x86_64]),
并将其推入ecr。它工作。好。
然后,我尝试用cmd
在我的M1上运行图像[docker run——platform linux/x86_64 -p 9000:8080 farmair_scraping]
[curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations"]- d '{"payload"hello world !"}")
但是我得到了一个错误信息
"消息:未知错误:Chrome failed to start: crash。n(未知错误:DevToolsActivePort文件不存在)n(从chrome位置/opt/chrome/chrome启动的进程不再运行,因此ChromeDriver假设chrome已经崩溃。
我想把我的M1摔成碎片…我总是跟docker过不去。
在您的FROM
声明中,您明确标记x86_64
图像偏好。本地使用arm64
接口