如何将 rpm 安装到 /usr/bin 而不是 /opt/app-root/bin

How to install rpm to /usr/bin instead of /opt/app-root/bin

我正在尝试为 Centos7 创建 rpm 包。 所以我从 Centos7 映像创建 Docker 文件并在其中构建 rpm。 构建成功,但有一个问题: 当我尝试将此 rpm 作为包用于其他 Docker 文件时,当我需要将其安装到 usr/bin.

时,它会安装到 /opt/app-root/bin

这是我的 Docker 用于构建 rpm 的文件(我也将它安装在里面只是为了检查它是否有效):

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。 之后我尝试在另一个 Docker 文件中使用此 rpm,它安装成功,但找不到使用它的命令:no such file or directory 我想它安装 rpm 到错误的路径然后找不到它。

我想我的问题是使用 USER root - 看起来这就是它尝试将其安装到 /opt/root/ 但我不知道如何更改它的原因。

如何安装到usr/bin?我需要在 Docker 中创建另一个用户吗?或者什么?

我开始认为我的问题是为构建应用选择了错误的图像。 我尝试使用另一个:

FROM centos:centos7

并手动安装 python。这解决了问题 - 在此图像中,我在编写 Dockerfile 时拥有 root 权限,并且我的库按照我的意愿安装到 /usr/bin。 所以解决方案是:

FROM centos:centos7
MAINTAINER The CentOS Project <cloud-ops@centos.org>

RUN yum -y update; yum clean all
RUN yum -y install epel-release; yum clean all
RUN yum -y install python-pip; yum clean all
RUN yum -y install rpm-build
RUN yum -y install git, which


RUN pip install --upgrade pip
RUN pip install --upgrade setuptools

RUN mkdir app
COPY . /app
WORKDIR /app 

RUN git clone https://github.com/klbostee/typedbytes.git
RUN cd typedbytes && python setup.py install
...

等等。