在 Dockerfile 中进行安装

use*_*421 0 docker dockerfile

我想通过 dockerfile 构建一个 docker 镜像。

有一个特定的应用程序,我希望 dockerfile 具有。

我安装这个应用程序的方式是我有一些 cmake 文件,并且我使用make, install.

我想在坞文件中拥有此功能。换句话说,当构建 dockerfile 时,我希望该应用程序已安装在我的映像中。

我如何处理 dockerfile 中的文件管理事情?

我知道当我处理命令时RUN,我可以挂载文件系统,从 docker 主机到 docker 镜像。但我现在对此并不感兴趣,因为 dockerfile 将使用的文件仅用于构建应用程序,而没有其他用途。

kth*_*pso 6

通常Dockerfile你会:

  1. COPY您的源文件到您的图像中。
  2. 安装必要的工具(make等)。
  3. RUNmake 来构建和安装您的应用程序。

一个基本的 Dockerfile 可能是:

FROM ubuntu

# Copy your source file directory into /app
COPY path/to/source /app/

# Install make
RUN apt update && apt install -y make

# Change to /app
WORKDIR /app

# run make
RUN make install
Run Code Online (Sandbox Code Playgroud)

例子

举一个简单的例子,假设我有一个 makefile,它构建并安装一个名为 的应用程序sayhi

install:
        echo -n "#!/bin/bash\necho hello world" >> /usr/local/bin/sayhi
        chmod +x /usr/local/bin/sayhi
Run Code Online (Sandbox Code Playgroud)

在同一目录中使用此 Dockerfile,我使用以下命令构建图像docker build --tag sayhi .

FROM ubuntu

COPY . /app/

RUN apt update && apt install -y make

WORKDIR /app

RUN make install

# Set the default command to run my application
CMD ["sayhi"]
Run Code Online (Sandbox Code Playgroud)

然后我可以像这样运行我的 docker 容器:

$ docker run sayhi
hello world
Run Code Online (Sandbox Code Playgroud)

  • 使用多层构建也是值得的,您可以在其中复制构建的文件,因为不需要将源/对象碎片放在最终容器中。 (3认同)