我正在尝试使用 Docker 来改进我的工作流程。我安装了"Docker Toolbox for Windows"在我的 Windows 10 家庭版上(因为 Docker 只能在专业版上运行)。我正在使用 mgexhev's angular-seed它声称提供完整的 docker 支持。有一个链接 ./.docker/angular-seed.development.dockerfile 的 docker-compose.yml 文件。
在 git 克隆种子项目后,我可以通过运行 seed project's github page 上给出的命令来启动它.所以我可以在运行后看到应用程序:
$ docker-compose build
$ docker-compose up -d
但是当我使用 Visual Studio Code 更改代码并保存时,livereload 不起作用。我可以看到我的更改的唯一方法是重新运行 build 和 up 命令(重新运行 npm install;5 分钟)。
在Docker's documentation他们说“将主机目录挂载为数据卷”,以便能够“更改源代码并实时查看其对应用程序的影响”
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 移动到 home,因为我在某处读到,不使用“home”目录可能存在一些访问权限问题,但这没有任何区别。
我也有点困惑,说明说访问 localhost:5555。我必须去 dockerIP:5555 查看应用程序(以防这有助于任何人理解为什么我的代码没有在我的 docker 容器内更新)。
当然,我的更改应该自动转移到 docker 环境中,否则 docker 对开发不是很有用 :)
最佳答案
查看您链接到的 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 机器在虚拟机 VM 中运行 docker。默认情况下,我相信 c:\Users 共享到虚拟机中,但您需要检查虚拟框设置以确认这一点。您尝试映射到容器的任何主机目录都是从 VM 映射的,因此如果您的文件夹未共享到该 VM,则不会包含您的文件。
通过 IP,localhost 可以在 Linux 主机和适用于 windows/mac 的较新版本的 docker 上运行。旧的基于 docker-machine 的安装需要使用 virtual box VM 的 IP。
关于angularjs - 更改我的项目文件不会更改 Docker 机器内的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41925212/