繁体   English   中英

创建带有内容的 minio docker 镜像

[英]Create minio docker image with content

我想为集成测试目的构建一个 minio docker 容器。

我想在我的 Dockerfile 中执行以下操作。

  • 创建 minio 容器
  • 创建一个测试桶
  • 将少量测试数据复制到测试桶中
  • 启动minio服务

测试数据

./test-data/foo.txt
./test-data/bar.txt
FROM minio/minio

RUN mkdir -p /buckets/my-bucket 

COPY test-data /buckets/my-bucket/test-data"

EXPOSE 9000 9001

CMD [ "minio", "server", "/buckets", "--address", ":9000", "--console-address", ":9001" ]

我知道我可以在单独的容器中运行mc来填充我的存储桶,但这需要一点编排。

有没有办法可以在 Dockerfile 中完成这些步骤?

一个 Dockerfile 只是一个 shell 命令的集合……所以你几乎可以做任何你想做的事情。 例如:

FROM docker.io/minio/minio:latest

COPY --from=docker.io/minio/mc:latest /usr/bin/mc /usr/bin/mc
RUN mkdir /buckets
RUN minio server /buckets & \
    server_pid=$!; \
    until mc alias set local http://localhost:9000 minioadmin minioadmin; do \
        sleep 1; \
    done; \
    mc mb local/bucket1; \
    echo this is file1 | mc pipe local/bucket1/file1; \
    echo this is file2 | mc pipe local/bucket1/file2; \
    kill $server_pid

CMD ["minio", "server", "/buckets", "--address", ":9000", "--console-address", ":9001"]

如果我们使用上面的 Dockerfile 构建一个名为minio-demo的镜像,然后像这样启动一个容器:

$ docker run --rm -p 127.0.0.1:9000:9000 -p 127.0.0.1:9001:9001  minio-demo

我们看:

$ mc alias set demo http://localhost:9000 minioadmin minioadmin
$ mc ls demo
[2022-07-07 22:01:35 EDT]     0B bucket1/
$ mc ls demo/bucket1
[2022-07-07 22:01:35 EDT]    14B STANDARD file1
[2022-07-07 22:01:35 EDT]    14B STANDARD file2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM