gpt4 book ai didi

node.js - 在容器中运行 webserver 之前将文件从主机复制到 docker 容器

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

我在 docker 容器中有一个 nodejs 应用程序。我运行带有 v 标志的 docker 容器并将一些主机文件夹映射到 docker 文件夹,例如主机上的/opt 映射到 docker 实例上的/opt。比 docker 运行 node app.js并且应用程序已启动并正在运行,但是在我运行 node app.js 之前我想将容器内的文件/opt/kuku.txt 复制到另一个文件夹/var/src/application/etc/。我应该在 CMD 之前的 Dockerfile 中执行吗?指示?

最佳答案

您不能在 Dockerfile 中执行此操作...在镜像构建时该文件尚不存在。它显然在部署时存在于您的 Web 服务器上。

你可以通过几种方式解决这个问题......

在您的容器中创建一个 simlink,指向文件在运行时将存在的位置...

# Dockerfile
RUN ln -s /var/src/application/etc/kuku.txt /opt/kuku.txt

其次,您可以在运行时将文件绑定(bind)到正确的位置...
docker run -v /opt:/opt -v /opt/kuku.txt:/var/src/application/etc/kuku.txt myimage

第三,您可以向处理此问题的容器添加一个入口点
# entrypoint.sh
cp /opt/kuku.txt:/var/src/application/etc/kuku.txt
exec node server

# Dockerfile

...
COPY entrypoint.sh /app/entrypoint.sh
CMD [entrypoint.sh]

关于node.js - 在容器中运行 webserver 之前将文件从主机复制到 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39576564/

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