前言:利用三天时间学习docker并成功将一个前后端分离的项目部署到了阿里云服务器,过程遇到很多问题,也都一一解决,以下内容作记录参考。
1、准备工作及需要用到的工具
阿里云服务器、finalShell、docker、Navicat
1.1、阿里云服务器
我这里买了一个轻量级的服务器,够用了,第一次买回便宜一些。
1.2、finalShell
finalshell是一个国产远程连接工具,类似于mobaxterm、xshell,操作起来比较简单
1.3、docker
下载docker以及配置阿里云的加速器镜像(容器镜像服务 (aliyun.com))
执行
docker info
到这里就可以看到docker的相关的信息,以及加速器镜像
1.4、Navicat
这里数据库我用了Navicat ,大家各取所需。
以上就是准备工作
2、打包工作
2.1、后端打包
首先我们需要将yml配置文件中的数据库地址改为我们服务器的地址,如图
然后使用maven中install进行打包得到一个jar包,可以先copy到一个文件中备用 。
2.2、前端打包
我这里使用的是vue脚手架,打包方式如下:
1、首先还是需要在前端文件中对路由地址进行修改,将原来的localhost改为服务器地址
2、打包步骤如下 ,如果使用webstorm则使用命令npm run build
打包后会得到一个dist文件,也是同样copy出来备用。
3、制作镜像
这里我们需要先拉取mysql镜像(后面可以加版本号,不加默认是最新版本)
docker pull mysql
查看mysql镜像
docker images
运行mysql
docker run -d --name mymysql -p 3306:3306 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
-d:后台运行容器
--name:给容器起个名字
-p:制定映射端口,宿主机端口:容器端口
-v:绑定一个卷,容器的/var/lib/mysql映射到宿主机的/data/mysql目录
-e MYSQL_ROOT_PASSWORD=123456:设置环境变量,密码设置为123456,不指定的会默认分配随机密码
mysql:使用的镜像
3.1、制作后端镜像
3.1.1、首先我们需要在后端jar包的同级文件下新建Dockerfile文件,内容如下
FROM java:8
VOLUME /tmp
ADD clinic.jar clinic.jar
EXPOSE 8091
ENTRYPOINT ["java","-jar","/clinic.jar"]
FROM java:8 基础镜像
VOLUME:挂载的目录
ADD clinic.jar clinic.jar:将你上传的jar包重新命名并在容器中运行
EXPOSE:暴露的端口
ENTRYPOINT:容器启动后执行的命令
3.1.2、打包镜像
docker build -t clinic .
注:最后的.不能忽略,表示当前目录的所有文件
3.1.3、运行容器
docker run -d -p 8091:8091 --name clinic-8091 clinic
3.2、制作前端镜像
3.2.1、在前端文件夹dist的同一级文件夹下新建一个Dockerfile文件,文件内容如下
FROM nginx:latest
COPY ./dist /usr/share/nginx/html/
EXPOSE 80
3.2.2、打包镜像
docker build -t clinic-ui
3.2.3、运行容器
docker run -d -p 80:80 --name clinic-ui-80 clinic-ui
最终效果