在容器

时间:2016-09-19 15:13:09

标签: node.js docker dockerfile

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

1 个答案:

答案 0 :(得分:2)

你不能在Dockerfile中这样做......文件还没有在图像构建时。它显然在部署时存在于您的Web服务器上。

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

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

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

其次,你可以在运行时将文件绑定到正确的位置......

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]