【发布时间】:2021-03-09 12:01:26
【问题描述】:
我正在尝试为 Centos7 创建 rpm 包。
所以我从 Centos7 镜像创建 Dockerfile 并在里面构建 rpm。
它构建成功,但是有一个问题:
当我尝试将此 rpm 作为其他 Dockerfile 中的包使用时,它会安装到 /opt/app-root/bin,而我需要将其安装到 usr/bin。
这是我用于构建 rpm 的 Dockerfile(我也将它安装在里面只是为了检查它是否有效):
FROM centos/python-27-centos7:latest
USER root
RUN yum update -y
RUN yum install rpm-build -y
WORKDIR /usr/src/app
COPY . .
RUN bash -c "pip install --upgrade pip"
RUN git clone https://github.com/klbostee/typedbytes.git
RUN bash -c "cd typedbytes && python setup.py install"
RUN bash -c "pip install -r requirements.txt"
RUN git clone https://github.com/klbostee/dumbo
RUN bash -c "cd dumbo && python setup.py \
--command-packages=pypi2rpm.command bdist_rpm2 \
--binary-only \
--tmppath /tmp/ \
--dist-dir=. \
--no-autoreq \
--name=python27-dumbo \
--python=python"
RUN cd dumbo && yum install *.rpm -y
CMD ["bash"]
之后我使用docker run -ti -v ... 并从已安装的卷中复制rpm。
之后我尝试在另一个 Dockerfile 中使用这个 rpm,它安装成功,但找不到使用它的命令:no such file or directory
我想它将rpm安装到错误的路径然后找不到它。
我想我的问题是使用 USER root - 看起来这就是为什么它尝试将它安装到 /opt/root/ 但我不知道如何更改它。
如何安装到usr/bin?我需要在 Docker 中创建另一个用户吗?还是什么?
【问题讨论】:
-
如果您的最终目标是创建一个安装了软件的 docker 映像,我会跳过创建中间 rpm。
标签: docker centos dockerfile centos7 rpm