本文主要介绍使用docker进行node项目部署的简单流程。
1. docker基础操作
对于docker的详细介绍文档很多,详见参考资料,本节主要介绍docker的简单部署中所需要的知识。
1.1 基础知识
docker是一个应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中。我觉得可以简单的理解是docker是一个“虚拟机器”,可以将代码文件以及环境配置一起打包。
其中设计两个比较重要的概念:镜像和容器。镜像就是大家所熟知的文件存储方案。
- 镜像可以拓展出多个容器。
- 容器的镜像的一个实例,一个镜像可以扩展出多个容器。
- 容器的更改可以重新保存为一个新的镜像文件。
1.2 基本操作
sudo docker search ubuntu # 在docker库里面搜索
sudo docker pull ubuntu # 获取ubuntu镜像
sudo docker images # 查看镜像列表
sudo docker run -i -t -p xxxx:80 -p xxxx:3000 -p xxxx:6379 -p xxxx:3306 piano_room_reservation bash# 从镜像文件运行一个容器,并规定端口映射
sudo docker ps -a # 显示容器列表
sudo docker rm my_container_id # 删除容器
sudo docker start my_container_id # 启动容器
sudo docker close my_container_id # 关闭容器
sudo docker exec -it my_cotainer_id bash # 进入容器命令行
2. 部署实践
本段以THU琴房预约项目为例,介绍部署流程。我们所配置的docker环境如下:
ubuntu 18.04
mysql 5.7
redis 4.0.9
node 10.15.0
部署流程如下(获取ubuntu镜像,然后在ubuntu镜像上配置其他环境)
#------------ 安装docker -----------------
uname -r # 查看内核版本,要求高于3.10
wget -qO- https://get.docker.com/ | sh # 使用脚本安装docker
sudo service docker start # 启动docker后台服务
docker run hello-world # 测试运行
#------------ 获取ubuntu -----------------
sudo docker search ubuntu
sudo docker pull ubuntu
sudo docker images
#------------ 生成容器 -----------------
sudo docker run -d -p xxxx:80 -p xxxx:3000 -p xxxx:6379 -p xxxx:3306 piano_room_reservation# 从镜像文件后台运行一个容器,并规定端口映射
sudo docker exec -it container-id bash# 进入容器交互界面
#------------ 配置docker环境 -----------------
# 安装mysql,设置账号密码
# 安装redis
# 安装node
# 配置项目
3. 打包迁移
本段主要介绍docker文件打包以及迁移准备。
我们需要将容器文件重新打包为镜像文件,之后将镜像文件导出。
sudo docker commit container_id image_name # 将容器打包为镜像
sudo docker save image_name -o name.tar # 保存镜像
sudo docker load -i name.tar # 导入镜像
或者也可以选择上传至docker hub
sudo docker login # 登录
# 省略注册账号、建库操作
sudo docker tag image_name your_hub_name/your_respositories:tag_name # 为镜像打上标签
sudo docker push your_hub_name/your_respositories:tag_name # 上传
# 如果为公有库,之后可以通过docker search得到
网友评论