相关疑难解决方法(0)

如何通过 Docker Compose 使用 Docker 构建机密?

使用docker build命令行我可以传递构建秘密,如下所示

docker build \
  --secret=id=gradle.properties,src=$HOME/.gradle/gradle.properties \
  --build-arg project=template-ms \
  .
Run Code Online (Sandbox Code Playgroud)

然后在 Dockerfile 中使用它

# syntax = docker/dockerfile:1.0-experimental

FROM gradle:jdk12 AS build
COPY *.gradle .
RUN --mount=type=secret,target=/home/gradle/gradle.properties,id=gradle.properties gradle dependencies
COPY src/ src/
RUN --mount=type=secret,target=/home/gradle/gradle.properties,id=gradle.properties gradle build
RUN ls -lR build
FROM alpine AS unpacker
ARG project
COPY --from=build /home/gradle/build/libs/${project}.jar /tmp
RUN mkdir -p /opt/ms && unzip -q /tmp/${project}.jar -d /opt/ms && \
  mv /opt/ms/BOOT-INF/lib /opt/lib
FROM openjdk:12
EXPOSE 8080
WORKDIR /opt/ms
USER nobody
CMD ["java", "-Xdebug", "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=0.0.0.0:8000", "-Dnetworkaddress.cache.ttl=5", …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

6
推荐指数
1
解决办法
5113
查看次数

在 docker 中使用 Secrets 没问题,但对于 docker-compose 则失败

我有一个Dockerfile使用秘密的,我可以使用 成功构建图像docker build。但是,当我尝试使用构建相同的图像时,docker-compose build出现错误:

ERROR: Dockerfile parse error line 4: Unknown flag: mount
Run Code Online (Sandbox Code Playgroud)

这种情况发生在 Ubuntu 20.04LTS(Docker 版本 18.09.6,内部版本 481bc77,docker-compose 版本 1.20.0-rc2,内部版本 8c4af54)上。

在 RHEL 7.9(Docker 版本 20.10.7 版本 f0df350、docker-compose 版本 1.29.2、版本 5becea4c)上,会出现不同的错误:

[2/2] RUN --mount=type=secret,id=the_secret cat /run/secrets/the_secret:  
 #8 0.466 cat: /run/secrets/the_secret: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如何使用 docker-compose 构建涉及机密的镜像?

使用 docker 构建(有效)

#!/bin/bash
export COMPOSE_DOCKER_CLI_BUILD=1
export DOCKER_BUILDKIT=1


echo "I have a secret" > secret.txt
docker build --secret id=the_secret,src=./secret.txt .
Run Code Online (Sandbox Code Playgroud)

使用 docker-compose 构建(失败) …

docker docker-compose docker-secrets

6
推荐指数
0
解决办法
2434
查看次数

标签 统计

docker ×2

docker-compose ×2

docker-secrets ×1