docker部署项目

docker部署项目

一个项目必然包含数据库、后台、前端。
我的项目是mysql+springboot+vue,这篇blog是整个项目docker部署的笔记。

docker

docker是一套开源的应用容器引擎,我们可以使用docker创建虚拟环境,在虚拟环境中安装应用,运行应用程序,运行数据库等等可以在真机上进行的操作。它就相当于是一个运行在真机上的虚拟环境,但是可以通过真机提供外部对其的访问。

docker内部概念

images:镜像,docker的虚拟环境。例如:你拥有一个linux的image,它就是一个浓缩版的linux,你可以像使用linux操作系统一样使用它。
container:容器,docker中实际运行的程序,启动image加上参数,docker会创建一个container并运行起来。因此,你可以创建多个容器运行。
注:images和container的关系就像是类和实例的关系,一个类可以有多个实例。

docker常用命令

查询image:docker search [image关键词]
根据image名查询docker官方仓库已有的image,如果有的话可以直接下载并开始使用。
查询已有image:docker images
下载image:docker pull [image name]
这里的image指的是通过search查询出的image的name
运行镜像:docker run [参数]
查询正在运行的镜像:docker ps
查询已经创建过的所有镜像 :docker ps -a

部署数据库

在开发服务器上直接使用docker创建数据库镜像,然后把镜像导出,在运行服务器上在把镜像导入的话,数据库无法访问。
我不知道原因是什么,我猜可能是创建数据库镜像的时候镜像里面保存了ip地址的相关信息,在另一台机子上ip地址信息会改变导致无法访问。
所以我在开发服务器上对数据库进行备份,拿到backup.sql文件,然后在运行服务器上下一个sql镜像,然后数据恢复,其实也差不多,麻烦一点。

下载mysql镜像

//下载mysql镜像
docker pull mysql
//运行镜像,创建容器并运行
//-i是打开STDIN用于控制台交互,-t分配设备,支持登录进入容器
//-d容器后台运行
//-p端口映射,前面3306指对外暴露的端口,后面3306指的是镜像的端口号
//--name指名字,前一个指创建的容器名(自定义),后一个是镜像名,也就是从哪个镜像创建容器
//-e后面是配置容器的相关参数,不同的容器可能会有不同的参数,这里配置的是mysql数据库的密码
docker run -it -d -p 3306:3306 --name mysql mysql -e MYSQL_ROOT_PASSWORD=root
//然后mysql数据库就开始运行了

//在需要部署的时候,需要将mysql的数据dump下来并且从容器拿出来
//查看正在运行的容器,找到mysql的container id
docker ps -a
//进入mysql容器,进入之后命令行就是一个linux命令行,可以用ctrl+c退出返回windows
docker exec -it [container id] /bin/bash
//创建数据库备份
mysqldump -u root -p [database name] > /dump.sql
//然后退出容器,因为要把镜像中的文件拿出来到windows,所以在容器中是无法进行的
//从容器中cp文件到windows本地
docker cp [container id]:/dump.sql [本地路径]
//然后指定的本地路径下就会出现一个dump.sql文件

//在部署的时候,创建容器步骤一样//将dump.sql文件拷贝到容器中
docker cp [dump文件路径] [container id]:/dump.sql
//进入mysql容器中
mysql -u root -p
//输入密码进入mysql,然后恢复数据
source /dump.sql或者mysql -u root -p [database name] < /dump.sql

//数据迁移完毕

未完,待续……

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值