把一个 Node.js web 应用程序给 Docker 化文档
介绍文档

1、 下载Docker Desktop:下载链接 2、 而后启动docker

3、 新建项目,在文件夹中新建Dockerfile.dockerignore

4、 建立镜像:docker build –t {镜像名} . (不能忽略后面的.

5、 运行容器:docker run –it {镜像名}

docker node 启动 配置 docker部署node服务_部署


docker node 启动 配置 docker部署node服务_部署_02


docker node 启动 配置 docker部署node服务_部署_03


docker node 启动 配置 docker部署node服务_docker node 启动 配置_04


docker node 启动 配置 docker部署node服务_部署_05


docker node 启动 配置 docker部署node服务_node_06


docker node 启动 配置 docker部署node服务_bash_07


docker node 启动 配置 docker部署node服务_docker node 启动 配置_08


docker node 启动 配置 docker部署node服务_docker_09


docker node 启动 配置 docker部署node服务_docker node 启动 配置_10


docker node 启动 配置 docker部署node服务_部署_11


docker node 启动 配置 docker部署node服务_docker_12

退出容器:exit

docker node 启动 配置 docker部署node服务_docker_13

docker node 启动 配置 docker部署node服务_node_14

启动后,浏览器无法访问容器里的服务

未解决

example中

修改代码里的host:127.0.0.1 –> 0.0.0.0 解决!

Vue-cli后的项目,启动了仍无法访问:

docker node 启动 配置 docker部署node服务_docker node 启动 配置_15


docker node 启动 配置 docker部署node服务_部署_16


docker node 启动 配置 docker部署node服务_bash_17


Logs没有报错

docker node 启动 配置 docker部署node服务_部署_18


修改host:localhost改为0.0.0.0

执行命令:docker run -p 8872:8080 -d gjw1516/docker-vuecli-example --mount type=bind,source=/src,target=/src 报以下信息:
Error response from daemon: OCI runtime create failed: container_linux.go:344: starting
container process caused “exec: “–mount”: executable file not found in $PATH”: unknown.
解决:添加/bin/bash,命令为:docker run -p 8872:8080 -d gjw1516/docker-vuecli-example /bin/bash --mount type=bind,source=/src,target=/src 但是执行后,没有报错,但是docker ps没有起来服务。
问题原因:https://www.jianshu.com/p/f1e7a1630c64 因此问题解决方法不是添加/bin/bash解决,而是调换—mount的位置,命令为:

docker run -d -it --mount type=bind,source=/src,target=/src -p 8879:8080 gjw1516/docker-vuecli-example

但是更改目录下的文件,仍无法同步
挂载本地地址应为绝对路径,并且共享该路径:
1、 打开docker设置Settings
2、 切换到Shared Drives点击Reset credentials重置
3、 选中要共享的磁盘,应用后可能需要输入本机用户的密码
4、 修改命令中共享的本地路径,如:

docker run -d -it --mount type=bind,source=f:/work/docker/myProject/docker-vuecli-example/src,target=/src -p 8879:8080 gjw1516/docker-vuecli-example

本地src文件夹下新增文件后使用docker exec -it {containerID} /bin/bash发现期望的src路径下没有新增的文件。后来发现在Dockerfile中设置了容器的工作路径为:

WORKDIR /project/example

因此挂载的话需要挂载到容器对应的文件夹路径中,如:

docker run -d -it --mount type=bind,source=f:/work/docker/myProject/docker-vuecli-example/src,target=/project/example/src -p 8879:8080 gjw1516/docker-vuecli-example

The command ‘/bin/sh -c npm install’ returned a non-zero code: 1
报错可能是node版本不正确,修改node版本

安装vue-cli报错:
Unexpected end of JSON input while parsing near ‘…precated"},“1.0.4”:{"’
解决:npm cache clean –force 然后重新执行npm install