首页 > 文章列表 > 解决 Docker Compose 构建时的权限拒绝问题的方法

解决 Docker Compose 构建时的权限拒绝问题的方法

223 2024-03-08
问题内容

我正在尝试构建以下 docker 文件然后运行它,但收到此错误

error response from daemon: failed to create shim task: oci runtime create failed: runc create failed: unable to start container process: exec: "./doc8": permission denied: unknown

我的 docker 文件如下,尝试一次性构建两个容器,另一个 id postgresql:

version: '3.7'
services:
  postgre-db:
    container_name: postgre-db
    image: postgres:12.2-alpine
    environment:
      postgres_password: postgres
      postgres_user: postgres
      postgres_db: postgres
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data
  doc8server:
    container_name: doc8server
    image: {image_name}
    env_file:
      - doc8.env
    build:
      context: .
      dockerfile: dockerfile.doc8server.multistage
    ports:
      - "{port}:{port}"
    volumes:
      - doc8data:/opt/app/assets/pdfs
      - doc8data:/opt/app/assets/pdfs/originalfiles
    depends_on:
      - postgre-db
volumes:  
  pgdata: {}
  doc8data: {}

这是我的运行命令

docker compose up -d

这是我的 dockerfile

FROM golang:latest as builder

LABEL maintainer="Doc8 <[email protected]>"

WORKDIR /app/invos_server_golang

COPY go.mod go.sum ./

RUN go mod download

COPY . .

WORKDIR /app/invos_server_golang

RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o doc8 .

FROM rastasheep/ubuntu-sshd:latest

WORKDIR /opt/app

COPY --from=builder /app/invos_server_golang/doc8 .
COPY --from=builder /app/invos_server_golang/doc8.env .

EXPOSE {PORT}

CMD ["./doc8"]

如果我做错了什么,请告诉我


正确答案


尝试在容器内执行 ./doc8 命令时似乎存在权限问题。您可以修改 docker 文件以确保可执行文件在运行之前具有正确的权限。

在 dockerfile 中修改此内容:

# Add execute permissions to the executable
RUN chmod +x ./doc8

CMD ["./doc8"]