gpt4 book ai didi

Python 库在安装到 img build 后在 docker 容器中丢失

转载 作者:行者123 更新时间:2023-12-01 09:20:05 27 4
gpt4 key购买 nike

我正在使用一些 Python 包构建图像,这是我的 Dockerfile:

FROM openjdk:8-alpine

RUN apk update && apk add bash gcc musl-dev
RUN apk add python3 python3-dev
RUN apk add py3-pip
RUN apk add libxslt-dev libxml2-dev

ENV PROJECT_HOME /opt/app

RUN mkdir -p /opt/app
RUN mkdir -p /opt/app/modules

# This is needed for Jep, otherwise it doesn't run
ENV LD_LIBRARY_PATH /usr/lib/python3.6/site-packages/jep
ENV LD_PRELOAD /usr/lib/libpython3.6m.so

RUN pip3 install jep
RUN pip3 install googleads
RUN pip3 install gspread
RUN pip3 list

COPY target/my-server-1.0-SNAPSHOT.jar $PROJECT_HOME/my-server-1.0-SNAPSHOT.jar

WORKDIR $PROJECT_HOME

CMD ["java", "-Dspring.data.mongodb.uri=mongodb://my-mongo:27017/mydb","-jar","./my-server-1.0-SNAPSHOT.jar"]

现在,即使我在构建时看到已安装的软件包(并且这是 pip3 list 返回的一个大列表...,当我启动容器时,我在上面看不到任何从 jep 安装的软件包.

/opt/app # pip3 list
jep (3.7.1)
pip (9.0.1)
setuptools (28.8.0)
/opt/app #

这就是我构建图像的方式:

docker build -t my-server .

这就是我检查已安装库的方式:

bash -c "clear && docker exec -it my-server sh"

pip3 list

有趣的是,在构建时运行的相同“pip3 list”命令返回整个库列表,但在容器内部,只有其中的一些......

更新1事实证明,如果我手动启动容器,我确实会看到所有库,但我已经(并且必须)使用 docker-compose 启动容器。不知怎的,当我这样做时,我看不到所有的库,这是我对该图像的 docker-compose 配置:

services:
my-server:
build: .
restart: always
container_name: my-server
ports:
- 8200:8200
working_dir: /opt/app
volumes:
- $HOME/data/Modules:/opt/app/modules
depends_on:
- mongo

感谢任何帮助,谢谢!

最佳答案

谢谢@AndreyBondar,它有效!

我正在使用 docker 构建镜像,并使用 docker-compose 运行它,docker-compose 也试图构建它,但由于 OSX 身份验证问题而无法构建,所以看起来它正在运行镜像的早期版本,而没有库(不是 100%,但看起来就是这样)。

因此,从 docker 设置中取消选中“在 macOs 钥匙串(keychain)中安全存储 Docker 登录信息”选项,现在它可以工作了,并且使用 docker-compose 完美构建了镜像。

关于Python 库在安装到 img build 后在 docker 容器中丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50862085/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com