标签: docker-build

以非root用户身份构建Docker镜像

新来的,想知道是否有人有以非 root 用户身份构建映像的经验?

我正在构建 Kotlin 项目(两步构建),我现在的目标是以非 root 用户身份构建它。这是我的 Dockerfile 的样子。任何帮助,将不胜感激:

# Build
FROM openjdk:11-jdk-slim as builder

# Compile application
WORKDIR /root
COPY . .
RUN ./gradlew build

FROM openjdk:11-jre-slim

# Add application
COPY --from=builder /root/build/libs/*.jar ./app.jar

# Set the build version
ARG build_version
ENV BUILD_VERSION=$build_version

COPY docker-entrypoint.sh /
RUN chmod 777 /docker-entrypoint.sh
CMD /docker-entrypoint.sh
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-build

15
推荐指数
1
解决办法
4万
查看次数

如何忽略要在 docker 构建上下文中发送的文件夹

由于我的项目结构,我面临着大型 docker 构建上下文的问题。在我的根目录中,我有用于公共代码和微服务文件夹的 lib 文件夹。现在我想为 miscroservice1 构建只包含 lib 文件夹并忽略其他微服务。

我在根文件夹中运行 docker build 命令,因为在 microservice 文件夹中运行命令给出错误 Forbidden path outside of build context

rootFolder
-- lib
-- microservice1/Dockerfile
-- microservice2/Dockerfile
-- microservice3/Dockerfile
Run Code Online (Sandbox Code Playgroud)

我有两个解决方案,但暂时没有尝试

  1. 在我的微服务文件夹中为 lib 添加符号链接
  2. 为每个 docker build 编写脚本以在特定的微服务文件夹中添加 lib 文件夹,然后运行 ​​docker build。

我正在尝试上述两种解决方案。任何人都可以建议任何最佳做法吗?

docker docker-build

14
推荐指数
2
解决办法
2万
查看次数

我应该将Python的pyc文件添加到.dockerignore吗?

我见过几个.dockerignorePython 项目的文件示例,其中*.pyc文件和/或__pycache__文件夹被忽略:

**/__pycache__
*.pyc
Run Code Online (Sandbox Code Playgroud)

由于无论如何这些文件/文件夹都会在容器中重新创建,我想知道这样做是否是一个好习惯。

python compilation docker docker-build

14
推荐指数
1
解决办法
3172
查看次数

使用--tag的Docker构建命令无法标记图像

我试图使用本地可用的Dockerfile构建Docker镜像.

docker build -t newimage .
Run Code Online (Sandbox Code Playgroud)

我之前也多次使用过这个命令,但不知何故它现在不能正常工作,我找不到它的原因.

如果有人可以帮助我寻找可能的解决方案或可能的区域来寻找问题,我将会非常有帮助.

我已经查看了其他可能与之相关的帖子: Docker构建标记存储库名称

docker dockerfile docker-build

12
推荐指数
1
解决办法
1万
查看次数

无法在 docker 中安装 pyodbc 并获取错误命令“gcc”失败,退出状态为 1

我正在尝试在 linux 容器内运行的 docker 中安装 pyodbc 但出现以下错误

单击此处查看图像

 src/pyodbc.h:56:10: fatal error: sql.h: No such file or directory
   #include <sql.h>
            ^~~~~~~
  compilation terminated.
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for pyodbc
Run Code Online (Sandbox Code Playgroud)

这是我的 dockerfile

FROM mcr.microsoft.com/azure-functions/python:2.0
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true
COPY . /home/site/wwwroot
FROM ubuntu
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
    apt-get -y install gcc mono-mcs && \
    rm -rf /var/lib/apt/lists/*
FROM  python
RUN apt-get update && apt-get install -y python3-pip
# RUN …
Run Code Online (Sandbox Code Playgroud)

azure python-3.x docker docker-build azure-functions

12
推荐指数
3
解决办法
6892
查看次数

docker buildkit的前端和后端到底是什么?

我正在使用 Buildkit 探索 docker 构建过程。DOCKER_BUILDKIT=1我在调用之前通过在 CLI 上设置环境变量来启用它docker build。从 buildkit文档中可以看出,

  • 要使用外部 Dockerfile 前端,Dockerfile 的第一行需要指向# syntax=docker/dockerfile:1您要使用的特定映像。

从语法文档中可以看出,

  • 此功能仅在使用 BuildKit 后端时可用,并且在使用经典构建器后端时被忽略。

这个前端后端在 docker 构建过程中意味着什么?谁能帮助我简单地理解它?

docker dockerfile docker-build docker-buildkit

12
推荐指数
1
解决办法
2130
查看次数

如何在构建期间将凭据带入Docker容器

我想知道是否有关于如何在一个期间将凭证注入Docker容器的最佳实践docker build.在我的Dockerfile中,我需要获取需要基本身份验证的资源Web服务器,并且我正在考虑如何在不对其进行硬编码的情况下将凭据带入容器的正确方法.

.netrc文件怎么样并使用它curl --netrc ...?但安全呢?我不喜欢将凭据与Dockerfile一起保存在源存储库中.

有没有例如使用参数或环境变量注入凭证的方法?

有任何想法吗?

docker dockerfile docker-build

11
推荐指数
1
解决办法
4025
查看次数

如何将主机用户主目录中的文件复制/添加到容器的主目录?

#更新

我刚刚意识到ADD/COPY命令不允许任何访问主机当前工作目录之外的文件或目录.还有一件事是,如果在ADD/COPY命令之后指定文件/目录的绝对路径作为源路径,则也不允许它.

请参考这个,并有快乐的黑客!:)

================================================== =====================

我想将主机用户主目录下的文件复制/添加到同一用户的容器主目录中.

首先,可以将用户更改为在每个主机上使用Dockerfile构建docker镜像的用户.例如,在我的主机中,我有一个用户"测试".在另一个人的主持人中,将有一个用户"新手".在每个主机中,我的Dockerfile将被构建/使用.

以下是我复制/添加文件的测试语法.

...
RUN mkdir -p /home/${USER}/.ssh

ADD /home/${USER}/.ssh/id_rsa* /home/${USER}/.ssh/
or COPY /home/${USER}/.ssh/id_rsa* /home/${USER}/.ssh/ 
...
Run Code Online (Sandbox Code Playgroud)

当我尝试生成此Docker文件时,将显示以下错误.

Step 43/44 : ADD /home/user/.ssh/id_rsa* /home/${USER}/.ssh/
No source files were specified
Run Code Online (Sandbox Code Playgroud)

请指导我做我想做的事.:) 谢谢.

docker dockerfile docker-build

11
推荐指数
1
解决办法
4698
查看次数

如何在构建时在docker-compose中指定$ docker build --network ="host"模式

在构建docker图像时docker build -t name:tag --network="host",它将在构建期间为RUN指令设置网络模式(默认为"default")

所以我试图用DOKCER-COMPOSE构建Docker镜像:

version: '3'
services:
  ezmove-2.0:       
    network_mode: "host"
    build:
      context: .
    ports:
     - "5000:5000" 
Run Code Online (Sandbox Code Playgroud)

所以按照上面的compose文件,我正在尝试构建图像,但是如何在构建时指定docker-compose中的--network ="host"模式

docker dockerfile docker-compose docker-build

11
推荐指数
2
解决办法
7091
查看次数

在 docker 容器上安装 msi

在 dockerizing 遗留应用程序方面需要帮助 我有一个遗留应用程序,其中包含多个组件(msi 安装程序)。这些组件使用各种技术,如 C#、windows 窗体、C++、MFC、.net 远程处理、C# webservices(asmx)。在这些组件中,有几个是桌面 ui 应用程序。我正在研究 dockerizing 这些组件的可行性。我知道无法从 docker 容器显示 UI,但 UI 组件也有一个命令行对应物,我们可以使用它执行所有可以用 UI 完成的操作。我从一个简单的组件开始。这包含用 C# 开发的 asmx Web 服务,通常托管在 Windows 机器上的 IIS 上。它将其文件安装到以下位置

  1. C:\program Files\ ==> 可配置
    1. C:\程序数据\

我通过以下操作创建了 docker 文件

  1. 获取 Windows Server 核心映像并启用 iis 和其他依赖项
    1. 将安装程序从主机复制到容器
    2. 使用 msiexec 命令以静默模式运行安装程序。

当我使用此 docker 文件运行 docker build 命令时,出现错误无法访问网络位置“C:\Program Files\\

没有谷歌的帮助。任何人都可以帮助我解决这个问题。我有几个问题 1. 默认情况下,docker 容器是否包含默认的 Windows 目录,如程序文件、程序文件 (x86)、用户配置文件、程序数据和应用程序数据?

编辑:对延迟响应表示歉意。提供下面的docker文件

FROM microsoft/aspnet
WORKDIR C:\\Installers
COPY EKBCS.exe C:\\Installers\\myinstaller.exe
COPY EKBCS.properties C:\\Installers\\myinstaller.properties
#RUN msiexec /unreg
#RUN msiexec /regserver
#RUN ["net …
Run Code Online (Sandbox Code Playgroud)

.net windows-installer docker docker-build

11
推荐指数
1
解决办法
7702
查看次数