Warm tip: This article is reproduced from serverfault.com, please click

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

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

发布于 2020-11-26 15:23:43

我正在尝试为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中创建另一个用户吗?还是什么?

Questioner
Mikhail_Sam
Viewed
11
Mikhail_Sam 2020-12-02 19:40:22

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

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
...

等等。