我正在尝试创建一个Minio / S3容器,以便可以将我的测试套件作为对github的操作来运行。我目前有以下内容:

name: Run Tests
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-18.04

    services:
      postgres:
        ...

      minio:
        image: minio/minio
        volumes:
          - /data
        ports:
          - 9000:9000
        env:
          MINIO_ACCESS_KEY: minio
          MINIO_SECRET_KEY: minio123
        options: --entrypoint "minio server /data" --health-cmd "curl -f http://localhost:9000/minio/health/live" --health-interval 10s --health-timeout 5s --health-retries 5

    steps:
      ...
我尝试了以下排列以使minio容器正常工作,但没有成功:
volumes:
  - ./data:/data

volumes:
  - ./:/data

volumes:
  - .:/data

volumes:
  - /data:/data
我什至尝试:
options: --entrypoint "mkdir /data; minio server /data" ...

options: --entrypoint "minio server /tmp" ...

options: --entrypoint ["minio server", "/tmp"] ...
我尝试使用-v标志在--entrypoint标志之前挂载卷。
options: -v /s3_data:/data --entrypoint "minio server /data" ...

options: -v ${{ github.workspace }}/s3_data:/data --entrypoint "minio server /data" ...

options: -v ${{ github.workspace }}/s3_data:/data:rw --entrypoint "minio server /data" ...
为了使其正常工作。但不幸的是,我得到了:
starting container process caused: exec: "minio server /data": stat minio server /data: no such file or directory: unknown
而且我不能在没有任何参数的情况下运行minio server :(

最佳答案

该错误抱怨的是--entrypoint "minio server /data",而不是volumes配置。它似乎正在寻找一个名为minio server /data的文件,而不是在shell中执行命令。这是--entrypoint标志的工作原理的good explanation,其原因是因为--entrypoint需要一个文件(二进制文件或脚本)来执行,而不是带有参数的命令才能运行。从here看来,这似乎很难克服。
我唯一想到的建议是在minio/minio Docker镜像的顶部构建,并在Dockerfile中设置参数,然后将其上传到DockerHub,以便可以将其用作image
以下是您可以使用的示例Dockerfile:

FROM minio/minio
ENTRYPOINT ["/usr/bin/docker-entrypoint.sh", "minio", "server", "/data"]

关于docker - 在github Action yml文件中创建一个Minio(S3)容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64031598/

10-10 15:27