docker部署基于nodejs的vue应用

正文:

环境准备

安装docker,具体操作参考官方文档

Vue项目准备

- 在项目根目录下,添加Dockerfile文件,Dockerfile是一个文本文档,其中包含用户可以在命令行上调用以构建镜像的所有命令(注意要先清除node_modules文件夹内容)

#指定我们的基础镜像是node,版本是v8.0.0 指定的基础image可以是官方远程仓库中的,也可以位于本地仓库
	FROM node:8.0.0

	#指定维护者的信息
	MAINTAINER mser

	#将根目录下的文件都copy到container(运行此镜像的容器)文件系统的app文件夹下
	ADD . /app/

	#cd到app文件夹下
	WORKDIR /app

#安装项目依赖包
	RUN npm install
	RUN npm rebuild node-sass --force

	#配置环境变量
	ENV HOST 0.0.0.0
	ENV PORT 9528

	#容器对外暴露的端口号
	EXPOSE 9528

	#容器启动时执行的命令 每个Dockerfile只有一个CMD命令 多了则会覆盖之前的CMD
	CMD ["npm", "run","dev"]

构建镜像

- 查看本地docker镜像

[root@localhost AG-Admin-v2.0]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
docker.io/sebp/elk   latest              2918030b8729        8 days ago          1.051 GB
docker.io/node       8.0.0               065e283f68bd        5 months ago        666.5 MB

- build

[root@localhost AG-Admin-v2.0]# docker build -t ms-ui:1.0 .
Sending build context to Docker daemon 3.897 MB
Step 1 : FROM node:8.0.0
	---> 065e283f68bd
Step 2 : MAINTAINER EOI
---> Running in 275025d855c0
	---> e66a97693ac5
Removing intermediate container 275025d855c0
Step 3 : ADD . /app/
	---> bbb817cfbb8b
.....省略一万行
Successfully built 6af9d7ffb2ab

- 启动镜像

[root@localhost AG-Admin-v2.0]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
ms-ui                1.0                 6af9d7ffb2ab        2 minutes ago       920.5 MB
docker.io/sebp/elk   latest              2918030b8729        8 days ago          1.051 GB
docker.io/node       8.0.0               065e283f68bd        5 months ago        666.5 MB

[root@localhost AG-Admin-v2.0]# docker run -d -p 9528:9528 ms-ui:1.0
1ffc51cbea42bb4ee9f43a5987ed2569923cfe42bb5f140cf8268fd38d9dd37a

docker run -d -p 9528:9528 ms-ui:1.0中的 -d 代表是后台运行、-p 9528:9528代表本地9528映射到容器内的9528端口,ms-ui:1.0是我们要运行的镜像

- 测试是否成功

[root@localhost AG-Admin-v2.0]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                     PORTS                    NAMES
1ffc51cbea42        ms-ui:1.0           "npm run dev"            About a minute ago   Up About a minute          0.0.0.0:9528->9528/tcp   zen_lamarr
ea9400d0259b        sebp/elk            "/usr/local/bin/start"   6 days ago           Exited (137) 2 hours ago                            test_elk_1
73e22237ef4e        sebp/elk            "/usr/local/bin/start"   6 days ago           Exited (1) 6 days ago                               elk

[root@localhost AG-Admin-v2.0]# docker logs 1ffc51cbea42
npm info it worked if it ends with ok
npm info using npm@5.0.0
npm info using node@v8.0.0
> juicy@1.2.0 dev /app
> node build/dev-server.js
npm info lifecycle juicy@1.2.0~predev: juicy@1.2.0
npm info lifecycle juicy@1.2.0~dev: juicy@1.2.0
[HPM] Proxy created: /jwt  ->  http://localhost:8765
[HPM] Proxy rewrite rule created: "^/jwt" ~> "/jwt"
[HPM] Proxy created: /api  ->  http://localhost:8765
[HPM] Proxy rewrite rule created: "^/api" ~> "/api"
(node:15) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Exited with code 3
(node:15) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
 DONE  Compiled successfully in 10673ms07:51:55
> Listening at http://localhost:9528

docker ps -a可以查看docker的运行容器,发现我们的容器正在运行,可以通过docker logs 来查看运行日志,当看到我们熟悉的Listening at http://localhost:9528 就知道成功啦,可以在本地通过浏览器访问UI。

- 常用命令

docker stop <CONTAINER ID>可以停止容器运行

	docker start <CONTAINER ID>可以启动容器运行

	docker restart <CONTAINER ID>可以重启容器

	docker rm <CONTAINER ID> -f可以强制删除在运行的容器

docker rmi <IMAGE NAME> 可以删除镜像

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吴伟祥

Xshell如何连接Docker容器 顶

2524
来自专栏搜云库

Docker Image 解决镜像无法删除的问题

Error response from daemon: conflict: unable to delete 4ac2d12f10cd (must be for...

38510
来自专栏h15945的专栏

【腾讯云的1001种玩法】利用 Docker 快速搭建 git 仓库 Gitlab 与代码审阅 Gerrit 平台

大多数程序猿都用过全球最大的git托管平台Github,上面有丰富的开源项目。在Github上托管开源项目是免费的,但是私有项目需要收取管理费。对于拥有云服务器...

3.2K0
来自专栏耕耘实录

Docker极简入门

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

712
来自专栏技术专栏

docker 常用命令

docker run --name (容器的名字) -d -p hostPort:containerPort 镜像名

982
来自专栏吴伟祥

Docker学习——多阶段构建(六) 顶

1051
来自专栏大闲人柴毛毛

Docker入门实战(二)——Docker镜像操作

1. 什么是Docker镜像? 从源码层面来讲,Docker镜像是一个个只读文件系统,对于源码这里不作深究。我们只从逻辑角度来看,Docker镜像是一个个装有...

4387
来自专栏A周立SpringCloud

Docker系列教程08-Dockerfile实战

本节通过几个例子,来工具Dockerfile的知识。 实战1:使用Dockerfile修改Nginx首页 创建一个Dockerfile,内容如下: FROM n...

2.7K6
来自专栏容器云生态

Docker初探(一)-有关docker的介绍和简单使用

先分享一下构建好的image(源码部署的Nginx)    https://hub.docker.com/r/xxbandy123/centos/ 本地do...

3219
来自专栏bboysoul

自己动手做一个最小的docker镜像

其实有人学了很久还是把docker当虚拟机来使用,但是docker其实和虚拟机是完全不一样的,如何理解这一区别呢,我觉得自己动手做一个docker的hello ...

791

扫码关注云+社区