Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular Docker&;角度2:绑定的目录仍为空_Angular_Docker_Mean Stack_Docker Volume - Fatal编程技术网

Angular Docker&;角度2:绑定的目录仍为空

Angular Docker&;角度2:绑定的目录仍为空,angular,docker,mean-stack,docker-volume,Angular,Docker,Mean Stack,Docker Volume,我必须在一个平均堆栈应用程序上工作,完全对接。 因此,我们有三幅图像: 一个用于mongo数据库 一个用于后端(nodejs) 一个用于前端(角度2) 由于我想在容器运行时在前端工作,所以我尝试将一个文件夹绑定到容器中的src文件夹 为此,我使用以下命令运行容器: docker run --name frontend -d -p 5555:5555 --link backend -v /home/frontend:/code/src/ infra-frontend:latest Docke

我必须在一个平均堆栈应用程序上工作,完全对接。 因此,我们有三幅图像:

  • 一个用于mongo数据库
  • 一个用于后端(nodejs)
  • 一个用于前端(角度2)
由于我想在容器运行时在前端工作,所以我尝试将一个文件夹绑定到容器中的src文件夹

为此,我使用以下命令运行容器:

docker run --name frontend -d -p 5555:5555 --link backend -v /home/frontend:/code/src/ infra-frontend:latest
Docker创建目录,但它保持为空,尽管它在容器中不是空的(我使用Docker exec bash命令进行了检查)

因此,由于这是我第一次与Docker打交道,我有点不知所措,我希望得到一些帮助。

注意:这个问题由前面的问题回答,但由于用户在理解这可能意味着什么方面有一些困难,我在下面添加了详细信息

docker在装载卷时遵循unix文件系统的规则。这意味着这些文件在您装载时不会显示。实际上,您可以在docker的Github问题中阅读更多关于这方面的内容

在我看来,你有两个选择:

  • 阅读“仅数据容器”并使用它(最好查看Docker卷)
  • 使用
    ENTRYPOINT
    CMD
    指定一个脚本,该脚本将在容器启动时将源代码下载到
    /code/src/
  • 将源代码始终保持在主机上,并从docker映像中指向它(例如/home/frontend/code/src/)
  • 将源代码下载到
    /code/src
    ,但公开卷
    /mycode/
    。然后使用类似的方法在
    /code/src/
    /mycode
    之间同步更改
  • 每一种选择都有不同程度的困难。到目前为止,最简单的可能是2或3。我认为,自Docker 1.10 ish以来,仅数据容器的概念已被取代。

    注意:这个问题由前面的问题回答,但由于用户在理解这可能意味着什么方面有一些困难,我在下面添加了详细信息

    docker在装载卷时遵循unix文件系统的规则。这意味着这些文件在您装载时不会显示。实际上,您可以在docker的Github问题中阅读更多关于这方面的内容

    在我看来,你有两个选择:

  • 阅读“仅数据容器”并使用它(最好查看Docker卷)
  • 使用
    ENTRYPOINT
    CMD
    指定一个脚本,该脚本将在容器启动时将源代码下载到
    /code/src/
  • 将源代码始终保持在主机上,并从docker映像中指向它(例如/home/frontend/code/src/)
  • 将源代码下载到
    /code/src
    ,但公开卷
    /mycode/
    。然后使用类似的方法在
    /code/src/
    /mycode
    之间同步更改

  • 每一种选择都有不同程度的困难。到目前为止,最简单的可能是2或3。我认为,仅数据容器的概念已被Docker 1.10 ish?

    取代,@jrbeverly之前的解释可能是正确的,但不容易理解,也与Docker文档无关

    以下是Docker文档中的简单解释:

    创建容器时会初始化卷。如果容器的基本映像包含指定装入点的数据,则在卷初始化时,现有数据会复制到新卷中。(请注意,在装入主机目录时,这不适用。

    资料来源:


    因此,如果需要在卷初始化时将/code/src内容复制到卷中,可以创建一个命名卷(-v frontend:/code/src)。您的卷不在/home/frontend中,而是在/var/lib/docker/volumes/frontend/_data中。

    之前@jrbeverly的解释可能是正确的,但不容易理解,也与docker文档无关

    以下是Docker文档中的简单解释:

    创建容器时会初始化卷。如果容器的基本映像包含指定装入点的数据,则在卷初始化时,现有数据会复制到新卷中。(请注意,在装入主机目录时,这不适用。

    资料来源:


    因此,如果需要在卷初始化时将/code/src内容复制到卷中,可以创建一个命名卷(-v frontend:/code/src)。您的卷将不在/home/frontend中,而是在/var/lib/docker/volumes/frontend/_data中。

    docker是直接在您的主机上运行,还是直接在VirtualBox中运行?直接在我的主机上运行?为什么?当您共享容器中的卷时,它会将容器中的文件夹替换为主机中的文件夹,因此,如果文件夹不是容器将填充的内容,它将保持为空。这个问题可以补充它:可能的重复似乎是同一个问题,但我不太明白答案。docker是直接在您的主机上运行,还是在类似VirtualBox的内部运行?直接在我的主机上运行,为什么?当您共享容器中的卷时,它会将容器中的文件夹替换为主机中的文件夹,因此,如果文件夹不是容器将填充的内容,它将保持为空。这个问题可以补充它:它的可能重复似乎是同一个问题,但我真的不明白答案。