docker - 在 github 操作 yml 文件中创建 Minio(S3) 容器
问题描述
我正在尝试创建一个 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
没有任何参数的情况下运行 :(
解决方案
TL;博士;
存在一个正在进行的 GitHub Actions 社区线程,涉及缺乏对设置的支持jobs.<job_id>.services.<service_id>.command
,
这个现有问题与您的问题非常相似。
您可以按照@ahasbini的建议扩展官方镜像,然后构建并将您docker image
的推送到Docker Registryimage
并在GitHub Actions 中使用您自己的镜像jobs.<job_id>.services.<service_id>.image
。例如:
Dockerfile
: _
FROM minio/minio
CMD ["server", "/data", "--address=0.0.0.0:9000"]
注意:您可以使用
lazybit/minio
我为此答案构建的图像。
job.<job_id>.services.<service_id>
规格:
jobs:
...
minio:
name: minio
runs-on: ubuntu-latest
services:
minio:
image: lazybit/minio
ports:
- 9000:9000
env:
MINIO_ACCESS_KEY: ${{ secrets.MINIO_ACCESS_KEY }}
MINIO_SECRET_KEY: ${{ secrets.MINIO_SECRET_KEY }}
volumes:
- ${{ github.workspace }}/data:/data
options: --name=minio --health-cmd "curl http://localhost:9000/minio/health/live"
steps:
- run: pip3 install minio
- run: |
python3 - <<'EOF'
from minio import Minio
from minio.error import ResponseError
try:
minio = Minio(
'localhost:9000',
access_key='${{ secrets.MINIO_ACCESS_KEY }}',
secret_key='${{ secrets.MINIO_SECRET_KEY }}',
secure=False
)
except Exception as ex:
raise
minio.make_bucket('foo')
minio.make_bucket('bar')
print(f'{minio.list_buckets()}')
EOF
备注:
- 图像当前
minio/minio
没有HEALTHCHECK
指令集(_docker inspect minio/minio:latest --format {{.Config.Healthcheck}}
_--health-cmd
_jobs.<job_id>.services.<service_id>.options
livenessProbe
jobs.<job_id>.steps
- 我在按名称连接到服务时遇到了一些问题,因此我将
minio
端点设置为locahost:9000
,GitHub Actions 在KubernetesPod
中运行,它们共享相同的网络命名空间并且可以通过localhost
- 访问和_ _
jobs.<job_id>.services.<service_id>.env
jobs.<job_id>.steps.<step_id>.run
- 使用context将本地目录挂载为支持
minio
服务的卷github
workspace
推荐阅读
- python - 如何定位特定行以替换数据帧之间的顺序不同?
- html - Safari“影子内容(用户代理)”导致输入内容被切断
- python - 从 Json Python 中提取多个键值
- javascript - 如何在 nodeJS 项目中使用 Jest 全局设置和拆卸?
- bash - bash true 和 false 不能按预期工作
- linux - 如何在虚拟机规模集中使用 terraform 请求 azure spot 实例?
- reactjs - 无法通过 react-router-dom 使用反应钩子
- python - TypeError:无法为列构建 TypeSpec
- android - 从 Firestore 中删除最后一个元素时,如何使 case REMOVED 触发?
- python - 如何使用 Matplotlib 显示折线图的阴影?