我尝试使用Docker来改善我的工作流程。我在我的Windows 10家庭版上安装了"Docker Toolbox for Windows"(因为据说Docker只适用于专业版)。我使用mgexhev's angular-seed声称提供完整的泊坞广告支持。有一个docker-compose.yml文件链接./.docker/angular-seed.development.dockerfile。
在git克隆种子项目之后,我可以通过运行seed project's github page上给出的命令来启动它。所以我在运行后可以看到该应用程序:
$ docker-compose build
$ docker-compose up -d
但是,当我使用Visual Studio代码更改代码并保存livereload不起作用。我可以看到我的更改的唯一方法是重新运行build和up命令(重新运行npm install; 5min)。
在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,因为我在某处读到可能存在一些访问权限问题而不使用&#34; home&#34;目录,但这没有区别。
我也有点困惑,说明说访问localhost:5555。我必须去dockerIP:5555才能看到该应用程序(如果这有帮助,任何人都能理解为什么我的代码不会在我的docker容器内更新)。
当然,我的更改应该自动进入docker环境,或者docker对开发不是很有用:)
答案 0 :(得分: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机器的安装需要使用虚拟机VM的IP。