无法将单个文件装载到 docker 容器
Single file mount to docker container is not working
我正在尝试使用 docker-compose 文件将存在于容器中的单个文件映射到存在于我的主机中的已编辑副本。但它不起作用。有人可以帮我解决这个问题吗?
我没有收到任何错误。但是当我对主机中的文件进行更改时,它不会反映在容器中。
docker-撰写条目
主机和docker容器中的文件都有777权限。
您需要使用 bind 而不是 volume 的挂载类型。
st2stream:
image: ${ST2_IMAGE_REPO: -stackstorm/}st2stream: ${ST2_VERSION:-3.3.0}
restart: always
depends_on :
- st2api
networks:
- private
volumes:
- ./files/st2. docker.conf:/etc/st2/st2.docker.conf:ro
- ./files/st2.user.conf:/etc/st2/st2.user.conf:ro
- type: bind
source: /opt/automation/projects/stackstorm/st2-docker/configs/st2stream/logging.docker.conf
target: /etc/st2/logging.docker.conf
- /opt/automation/projects/stackstorm/st2-logs:/var/log/st2:rw
我知道问题出在哪里了。当挂载单个文件并编辑它时,使用 nano 编辑器编辑文件或在使用 vim 之前关闭交换文件。使用 vim 时,它会创建一个交换文件并替换现有的交换文件。因此文件绑定 link 正在中断。这就是为什么这些变化没有反映双方的原因。
我正在尝试使用 docker-compose 文件将存在于容器中的单个文件映射到存在于我的主机中的已编辑副本。但它不起作用。有人可以帮我解决这个问题吗?
我没有收到任何错误。但是当我对主机中的文件进行更改时,它不会反映在容器中。
docker-撰写条目
主机和docker容器中的文件都有777权限。
您需要使用 bind 而不是 volume 的挂载类型。
st2stream:
image: ${ST2_IMAGE_REPO: -stackstorm/}st2stream: ${ST2_VERSION:-3.3.0}
restart: always
depends_on :
- st2api
networks:
- private
volumes:
- ./files/st2. docker.conf:/etc/st2/st2.docker.conf:ro
- ./files/st2.user.conf:/etc/st2/st2.user.conf:ro
- type: bind
source: /opt/automation/projects/stackstorm/st2-docker/configs/st2stream/logging.docker.conf
target: /etc/st2/logging.docker.conf
- /opt/automation/projects/stackstorm/st2-logs:/var/log/st2:rw
我知道问题出在哪里了。当挂载单个文件并编辑它时,使用 nano 编辑器编辑文件或在使用 vim 之前关闭交换文件。使用 vim 时,它会创建一个交换文件并替换现有的交换文件。因此文件绑定 link 正在中断。这就是为什么这些变化没有反映双方的原因。