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 条评论
登录 后参与评论

相关文章

来自专栏搜云库

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

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

524100
来自专栏快乐八哥

Docker基于已有的镜像制新的镜像-Docker for Web Developers(3)

1.根据运行的容器制作镜像 #查看所有的容器 docker ps #暂停当前容器 docker pause COTNAINER-ID #将容器运行当前状态提交 ...

22250
来自专栏LuckQI

微服务必学习容器技术Docker系列九~生命周期管理命令

我们前面已经学习了本地容器操作以及版本信息管理,复制提交等容器命令。但是对于怎么启动执行或者操作容器还不是很清楚,今天就来学习下整个容器周期的操作从启动,到停止...

11120
来自专栏云计算认知升级

在腾讯云上使用 Harbor 部署私有Registry

对于一些比较私密的镜像,涉及到安全问题,就不能推送到 Docker Hub,这就需要配置一个私有的 Registry,来存放我们的 Docker Images ...

62800
来自专栏耕耘实录

Docker初体验,向Docker Hub推送第一个本地镜像

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

11520
来自专栏大闲人柴毛毛

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

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

46570
来自专栏康怀帅的专栏

在开发环境使用 Docker

本文是对官方文档的总结与备注。 官方文档:https://docs.docker.com/develop/ 根据官方文档的层次,分为 容器 (Container...

74740
来自专栏bboysoul

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

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

9910
来自专栏姚俊刚的专栏

Dockerfile 分享之 SSH Server

Docker 官方网站上给出的示例里面有个 用 Dockerfile 构建 SSH Server 的例子, 我在腾讯云的主机上实验了一下, 中间添加了一些优化,...

1.7K00
来自专栏技术翻译

任何专家都应该知道的顶级Docker命令

Docker是一个不断发展的系统,开发人员主动致力于提高使用率和性能。所以命令总是在变化。Docker命令经常被弃用并替换为新的或更有效的命令。您可以使用hel...

16320

扫码关注云+社区

领取腾讯云代金券