我正在本地使用以下命令在 docker 容器中运行图像
docker pull locustio/locust
我的 docker-compose 如下所示,为此我使用了 docker-compose up
version: '3'
services:
locust-service:
image: locustio/locust
ports:
- "8089:8089"
volumes:
- ./:/mnt/locust
command: -f /mnt/locust/locustfile.py -H http://master:8089
我有我的卷,它是 locustfile.py,其中包含测试我的系统的所有代码。现在我需要将此映像与卷一起推送并部署到另一个私有存储库中,即文件 locustfile.py。
如何使用 docker-compose push 做到这一点?或者有没有其他方法可以复制卷?上述撰写文件的 docker-compose push 似乎不起作用
答案 0 :(得分:1)
卷通常用于保存数据,而不是应用程序代码。您应该将代码构建到派生的 Docker 映像中,然后可以推送该映像。
您可以将此处显示的内容写入基本的 Dockerfile:
FROM locustio/locust
COPY locustfile.py /mnt/locust
# CMD must be a JSON array if it's passing additional options to an ENTRYPOINT
CMD ["-f", "/mnt/locust/locustfile.py", "-H", "http://master:8089"]
那么您的 docker-compose.yml
文件只需要指定构建和运行它,但不要重复这些选项中的任何一个:
version: '3.8'
services:
locust-service:
build: .
image: my-docker-hub-name/locust
ports:
- "8089:8089"
然后 docker-compose build && docker-compose push
将构建并推送映像。在目标主机上,您需要复制此 docker-compose.yml
文件,但删除 build:
行。
查看 Locust 文档,这与对 Use docker image as a base image 的建议类似。您可能还会发现使用 use environment variables 来设置选项更灵活,而不是命令行参数,这可以让您在 Dockerfile 和 docker-compose.yml
运行时配置之间拆分选项。
答案 1 :(得分:0)
只能推送 docker 镜像。
当您运行映像创建容器时会生成卷,如官方文档 https://docs.docker.com/storage/volumes/ 中所述。
我在这里报告官方文档中的示例:
docker run -d \
--name=nginxtest \
-v nginx-vol:/usr/share/nginx/html \
nginx:latest