如何解决将文件从项目文件夹复制到主机,然后在我的容器中使用它们
我有一个docker-compose文件,可以从3个不同的Dockerfiles构建三个不同的映像。
在我的项目结构中,我有一些文件要复制到主机的特定文件夹中,因为这些文件将被其中一个容器使用。
我不希望这些文件夹位于容器中,因为每当我对其中一个文件进行更改时,都需要重新构建映像。
不是使用命令行将文件从项目复制到主机,而是如何在运行docker-compose build
时自动完成文件?
解决方法
不幸的是,docker-compose没有前脚本或后脚本的概念。实现目标的最简单方法是创建一个Shell脚本,该脚本将复制文件并调用docker-compose。如果由于某种原因您仅限于调用docker-compose本身,则可以在启动其他容器之前创建其他“设置”容器来复制文件:
version: "3"
services:
# setup container copies files from the project directory PROJECT_DIR
# to another directory HOST_DIR on the host machine
setup:
image: alpine:latest
volumes:
- ${PROJECT_DIR}:/project
- ${HOST_DIR}:/host
command: >
sh -c "cp -R /project/* /host/"
# service container depends on the setup container and uses files from
# the host machine directory HOST_DIR mounted to CONTAINER_DIR
service:
image: alpine:latest
depends_on:
- setup
volumes:
- ${HOST_DIR}:${CONTAINER_DIR}
command: >
sh -c "ls ${CONTAINER_DIR}"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。