之前也有学过一点docker方面的知识,这次迁移服务器刚好想着把docker用起来,用的腾讯云服务器,简单的列一下步骤和踩过的坑。
首先是安装docker,网上命令很多,这里不细说。
我们需要4个容器,分别是后端应用程序包(**.jar),nginx容器(存放前端静态资源,和nginx拦截跨域请求),mysql容器,redis容器。
1. 安装mysql
docker pull mysql:5.7 // 拉取镜像
docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 // 使用镜像创建容器
docker exec -it mysql /bin/bash // 进入mysql容器
mysql -u root -p root 登入mysql数据库 进去后可进行数据库的初始化工作
2. 安装redis
docker pull redis // 拉取镜像
docker run -p 6379:6379 --name redis -d redis // 创建并启动redis
3.安装nginx
docker pull nginx // 拉取镜像
先将前端项目的代码移动到/home/dist/目录下
docker run -d --name nginx -p 8081:80 -v /home/dist:/usr/share/nginx/html nginx 将主机的8081端口访问映射到虚拟机的80端口,并进行文件挂载
// 进入nginx容器 修改nginx.conf文件 笔者路径下为/etc/nginx/conf.d/ 在里面增加如下内容
对请求路径包含v1的RestApi统一由nginx进行转发
4.安装后端应用程序
与前个容器的制作方式不同,这个需要自己制作对应的镜像,方式通过Dockerfile文件进行建立
首先将Dockerfile 与 whu-car.jar 放在同一路径下,
Dockerfile里面内容如下:
docker build -t whu-car . // 制作一个名为whu-car的镜像,不要忘了后面的小数点
制作好镜像后,后面就是启动容器了,这一步很关键,因为这个容器需要依赖mysql和redis这两个容器。(踩过的坑就不列举了,如使用 --link mysql:mysql redis:redis等) 正确命令如下
docker run -d --name=car --net=host -p 8080:8080 whu-car
注意这里一定要使用host的网络连接方式,否则项目会连不上mysql报错。
关于这里为什么要使用这种连接,有兴趣的小伙伴可以参考这两篇文章
以上就是在服务器上用docker部署项目的一些步骤,如果说的不对,希望大家批评指教~。