创建minio码头工人形象与内容



我想构建一个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来填充我的bucket,但这需要一点编排。

有一种方法,我可以完成这些步骤在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

最新更新