猿问

无法使用 Pulumi 构建 dockerfile

我正在尝试使用Pulumi构建一个docker文件。我有以下普鲁米代码


func main() {

    pulumi.Run(func(ctx *pulumi.Context) error {

        imageName := "server"

        _, err = docker.NewImage(ctx, imageName, &docker.ImageArgs{

            ImageName: pulumi.Sprintf("gcr.io/gadic-310112/%s:latest", imageName),

            SkipPush: pulumi.Bool(true),

            Build: &docker.DockerBuildArgs{

                Dockerfile: pulumi.String("Dockerfile"),

            },

        })

        if err != nil {

            return err

        }


    }

}


但是,当我运行时,我收到以下错误:pulumi preview


Diagnostics:

  pulumi:pulumi:Stack (server-prod):

    error: program failed: docker build -f Dockerfile . -t gcr.io/gadic-310112/server:latest failed with error: exit status 1

    exit status 1


    error: an unhandled error occurred: program exited with non-zero exit code: 1


  docker:image:Image (server):

    error: #1 [internal] load build definition from Dockerfile

    #1 sha256:921a08a3c227abd8c3811effc689fa5319db237c32a4adf2b255007a51af9ef8

    #1 transferring dockerfile: 2B 0.0s done

    #1 DONE 0.0s

    failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount052159980/Dockerfile: no such file or directory

有趣的是,普鲁米似乎在引擎盖下奔跑。当我从我的终端运行它时,它成功了,没有任何错误。docker build -f Dockerfile . -t gcr.io/gadic-310112/server:latest

似乎Pulumi可能使用的工作目录与调用它的地方不同的工作目录。这可能吗?是否还有其他事情可能正在发生?

开心每一天1111
浏览 146回答 1
1回答

慕运维8079593

您的 Pulumi 项目构建在您的目录中,而不是在您所在的文件夹中。infraPulumi.yamlPulumi 提供者需要知道使用 docker 构建上下文的路径(有关这些内容的更多信息,请单击此处)Dockerfile)添加上下文应该可以解决此问题:func main() {    pulumi.Run(func(ctx *pulumi.Context) error {        imageName := "server"        _, err = docker.NewImage(ctx, imageName, &docker.ImageArgs{            ImageName: pulumi.Sprintf("gcr.io/gadic-310112/%s:latest", imageName),            SkipPush: pulumi.Bool(true),            Build: &docker.DockerBuildArgs{                Dockerfile: pulumi.String("Dockerfile"),                Context: "../", # note I'm adding the context here            },        })        if err != nil {            return err        }    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答