将文件从项目文件夹复制到主机,并在我的容器中使用它们



我有一个docker compose文件,用于从3个不同的docker文件构建三个不同的映像。

在我的项目结构中,我有一些文件要复制到主机中的特定文件夹中,因为这些文件将由其中一个容器使用
我不希望这些文件夹在我的容器中,因为每当我更改其中一个文件的内容时,我都需要重新构建映像。

不使用命令行将文件从项目复制到主机,如何在运行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}"