Golang Dockerfile 权限被拒绝

huangapple go评论126阅读模式
英文:

Golang Dockerfile permission denied

问题

似乎在我的 Dockerfile 中存在权限分配错误,我无法解决它。

以下是错误信息:

  1. Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/my-app": permission denied: unknown

这是我的 Dockerfile:

  1. # syntax=docker/dockerfile:1
  2. ##
  3. ## Build
  4. ##
  5. FROM golang:1.19rc2-buster AS build
  6. WORKDIR /app
  7. COPY src/go.mod ./
  8. COPY src/go.sum ./
  9. RUN go mod download
  10. COPY src/*.go ./
  11. RUN go build -o /my-app
  12. ##
  13. ## Deploy
  14. ##
  15. FROM gcr.io/distroless/base-debian10
  16. WORKDIR /
  17. COPY --from=build /my-app /my-app
  18. USER nonroot:nonroot
  19. ENTRYPOINT ["/my-app"]

这是我的 docker-compose 文件:

  1. version: "3.7"
  2. services:
  3. golang:
  4. container_name: golang
  5. build:
  6. dockerfile: go.Dockerfile
  7. ports:
  8. - 8080:80
  9. depends_on:
  10. - cassandra
  11. restart: always
  12. cassandra:
  13. container_name: cassandra
  14. image: cassandra:latest
  15. restart: always
  16. ports:
  17. - 9042:9042

希望这能帮到你。

英文:

I it seems like there is an error in the permission distribution on my Dockerfile and i can't seem to resolve it.

here is the error

  1. Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/my-app": permission denied: unknown

Here is my Dockerfile

<!-- language: lang-sh -->

  1. # syntax=docker/dockerfile:1
  2. ##
  3. ## Build
  4. ##
  5. FROM golang:1.19rc2-buster AS build
  6. WORKDIR /app
  7. COPY src/go.mod ./
  8. COPY src/go.sum ./
  9. RUN go mod download
  10. COPY src/*.go ./
  11. RUN go build -o /my-app
  12. ##
  13. ## Deploy
  14. ##
  15. FROM gcr.io/distroless/base-debian10
  16. WORKDIR /
  17. COPY --from=build /my-app /my-app
  18. USER nonroot:nonroot
  19. ENTRYPOINT [&quot;/my-app&quot;]

and here is my docker-compose

<!-- language: lang-yaml -->

  1. version: &quot;3.7&quot;
  2. services:
  3. golang:
  4. container_name: golang
  5. build:
  6. dockerfile: go.Dockerfile
  7. ports:
  8. - 8080:80
  9. depends_on:
  10. - cassandra
  11. restart: always
  12. cassandra:
  13. container_name: cassandra
  14. image: cassandra:latest
  15. restart: always
  16. ports:
  17. - 9042:9042

答案1

得分: 1

请确保你的Go代码包含以下内容:

  1. package main

这是Go语言中的包声明,它指定了当前文件所属的包名为"main"。

英文:

Just make sure that your go code contain a

  1. package main

huangapple
  • 本文由 发表于 2022年7月20日 08:47:06
  • 转载请务必保留本文链接:https://go.coder-hub.com/73044866.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定