我想为集成测试目的构建一个小型码头容器。
我想在我的Dockerfile中做以下工作。
创建minio container
试验数据
./test-data/foo.txt
./test-data/bar.txtFROM 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中完成这些步骤吗?
发布于 2022-07-08 02:04:57
Dockerfile只是一个shell commands...so的集合,您几乎可以做任何您想做的事情。例如:
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 file2https://stackoverflow.com/questions/72904999
复制相似问题