0

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

ERROR: Dockerfile parse error line 4: Unknown flag: mount

这发生在 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

如何使用 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 .

使用 docker-compose 构建(失败)

export COMPOSE_DOCKER_CLI_BUILD=1
export DOCKER_BUILDKIT=1


echo "I have a secret" > secret.txt
docker-compose build --no-cache test

Dockerfile

# syntax=docker/dockerfile:1.2
FROM python:3.8

RUN --mount=type=secret,id=the_secret cat /run/secrets/the_secret

码头工人-compose.yml

version: "3.6"

services:
    test:
        build: .
        secrets:
            - the_secret

secrets:
    the_secret:
        file: secret.txt
4

0 回答 0