在容器中运行webserver之前,将文件从主机复制到docker容器

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

您不能在Dockerfile中执行此操作…该文件在映像构build时尚未出现。 它显然在部署时在您的Web服务器上。

你可以用几种方法解决这个问题

在您的容器中创build一个指向文件将在运行时居住的位置的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]