gpt4 book ai didi

docker - 如何在Docker容器和本地文件系统之间交换文件?

转载 作者:行者123 更新时间:2023-12-02 18:47:15 26 4
gpt4 key购买 nike

我有一个TypeScript代码,该代码可以读取目录的内容,并且必须每隔一段时间将它们一次删除。

本地一切正常。我为代码制作了一个docker容器,并希望达到相同的目的,但是,我意识到目录内容与构建容器时存在的内容相同。
据我了解,docker容器与本地文件系统之间的连接丢失。

我一直在徘徊bindvolume选项,并且遇到了以下简单教程:
How To Share Data Between the Docker Container and the Host
根据上一教程,从理论上讲,我将能够实现我的目标:

If you make any changes to the ~/nginxlogs folder, you’ll be able to see them from inside the Docker container in real-time as well.


但是,我遵循了完全相同的步骤,但是仍然看不到本地所做的更改反射(reflect)在docker容器中,反之亦然。

我的问题是:如何从Docker容器访问本地文件系统以读取/写入/删除文件?
更新

这是我的 dockerfile
FROM ampervue/ffmpeg
RUN curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
RUN apt-get update -qq && apt-get install -y --force-yes \
nodejs; \
apt-get clean
RUN npm install -g fluent-ffmpeg
RUN rm -rf /usr/local/src
RUN apt-get autoremove -y; apt-get clean -y
WORKDIR /work
COPY package.json .
COPY . .

CMD ["node", "sizeCalculator.js"]

最佳答案

在docker run命令上批量挂载的简单方法docker run -it -v /<Source Dir>/:/<Destination Dir> <container_name> bash另一种方法是使用docker-compose
让我们尝试使用docker-compose
将您的dockerfile和docker-compose放在相同的位置或目录
主要焦点

volumes:
- E:\dirToMap:/work

docker-compose.yaml

version: "3"
services:
ampervue:
build:
context: ./
image: <Image Name>
container_name: ampervueservice
volumes:
- E:\dirToMap:/vol1
ports:
- 8080:8080
并在dockerfile中添加卷
FROM ampervue/ffmpeg
RUN curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
RUN apt-get update -qq && apt-get install -y --force-yes \
nodejs; \
apt-get clean
RUN npm install -g fluent-ffmpeg
RUN rm -rf /usr/local/src
RUN apt-get autoremove -y; apt-get clean -y
WORKDIR /work
VOLUME /vol1
COPY package.json .
COPY . .

CMD ["node", "sizeCalculator.js"]
并运行以下命令来启动容器
docker-compose -f "docker-compose-sr.yml" up -d --build

关于docker - 如何在Docker容器和本地文件系统之间交换文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62790098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com