如何将 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
...
等等。
我正在尝试为 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
...
等等。