3

我正在尝试使用 Docker 来改进我的工作流程。我在我的 Windows 10 家庭版上安装了“Docker Toolbox for Windows” (因为据说 Docker 只适用于专业版)。我正在使用mgexhev 的 angular-seed,它声称提供完整的 docker 支持。有一个 docker-compose.yml 文件,它链接了一个 ./.docker/angular-seed.development.dockerfile。

在 git 克隆种子项目后,我可以通过运行种子项目的 github 页面上给出的命令来启动它。所以我可以在运行后看到应用程序:

$ docker-compose build
$ docker-compose up -d

但是当我使用 Visual Studio Code 更改代码并保存 livereload 时不起作用。我可以看到我的更改的唯一方法是重新运行 build 和 up 命令(重新运行 npm install;5 分钟)。

Docker 的文档中,他们说“将主机目录挂载为数据卷”以便能够“更改源代码并实时查看其对应用程序的影响”

docker run -v //c/<path>:/<container path>

但是当我使用 docker-compose 时,我不确定这是否正确?我也尝试过运行:

docker run -d -P --name web -v //c/Users/k/dev/:/home/app/ angular-seed
docker run -p 5555:5555 -v //c/Users/k/dev/:/home/app/ -w "/home/app/" angular-seed
docker run -p 5555:5555 -v $(pwd):/home/app/ -w "/home/app/" angular-seed

和许多类似的命令,但似乎没有任何效果。

我尝试将我的项目从 C:/dev/project 移动到主目录,因为我在某处读到可能存在一些不使用“主”目录的访问权限问题,但这并没有什么区别。

我也有点困惑,说明说访问 localhost:5555。我必须去 dockerIP:5555 才能看到该应用程序(以防这有助于任何人理解为什么我的代码没有在我的 docker 容器内更新)。

当然,我的更改应该自动进入 docker 环境,否则 docker 对开发不是很有用:)

4

1 回答 1

1

查看您链接到的 docker-compose.yml ,我没有看到任何卷条目。没有它,主机上的文件和容器内的文件之间就不可能有联系。您需要一个包含卷条目的 docker-compose.yml,例如:

version: '2'

services:

  angular-seed:
    build:
      context: .
      dockerfile: ./.docker/angular-seed.development.dockerfile
    command: npm start
    container_name: angular-seed-start
    image: angular-seed
    networks:
      - dev-network
    ports:
      - '5555:5555'
    volumes:
      - .:/home/app/angular-seed

networks:
  dev-network:
    driver: bridge

Docker-machine 在虚拟机 VM 内运行 docker。默认情况下,我相信 c:\Users 已共享到 VM 中,但您需要检查虚拟框设置以确认这一点。您尝试映射到容器中的任何主机目录都是从 VM 映射的,因此如果您的文件夹未共享到该 VM,则不会包含您的文件。

使用 IP,localhost 可以在 Linux 主机和更新版本的 docker for windows/mac 上运行。较旧的基于 docker-machine 的安装需要使用虚拟机 VM 的 IP。

于 2017-01-29T20:44:29.663 回答