需求
很多人还没用过docker,或者说还没用docker安装过项目,今天我带大家使用docker安装一个开源项目renren-fast,包括它的前端与后端。这中间我们需要安装一些需要的资源,比如redis、mysql、nginx等
我们先来看下renrne-fast的git仓库:
renren-fast:https://gitee.com/renrenio/renren-fast
renren-fast-vue:https://gitee.com/renrenio/renren-fast-vue
所以renren-fast是个前后端分离的项目。下面我们就开始啦,坐好小板凳哈。
简介
Docker是一个开源的容器引擎,它有助于更快地交付应用。Docker可将应用程序和基础设施 层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部 署应用程序,并可以缩短从编写到部署运行代码的周期。
重要资源
dockerhub(https://hub.docker.com/)
镜像仓库,存放着 Docker 及其组件的所有资源,作用类GitHub
Harbor(https://github.com/goharbor/harbor/releases)
docker私服,可搭建搭建本地仓库
基本命令
两种方式安装docker
#安装
wget -qO- https://get.docker.com | sh
#或者:
yum install docker
#检查是否安装成功
docker version
启动与重启
# 启动docker
systemctl start docker
# 重启
service docker rest
切换镜像源
就像maven镜像切换成aliyun的一样,国外的镜像拉取很慢,所以最好切换成国内的
#换镜像源:
sudo vim /etc/docker/daemon.json
内容如下:
{
"registry-mirrors": ["https://m9r2r2uj.mirror.aliyuncs.com"]
}
#修改保存后,重启 Docker 以使配置生效。
sudo service docker restart
其他命令
#搜索镜像
docker search java
#拉取镜像
docker pull java:8
#删除镜像
docker rmi java:8
#列出容器
docker ps
#停止容器
docker stop {id}
进入容器
docker exec -it f0b1c8ab3633 /bin/bash
#删除容器(该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数)
docker rm f0b
总结过程
第一步、先安装docker、检查docker是否安装成功 第二步、切换docker的镜像源 第三步、启动docker 第四步、可以尝试一下命令集合:
docker search java
docker pull java:8
docker rmi java:8
ok,完成了上面的步骤之后我们基本对docker的命令有点了解了,接下来我们去安装一下对应的环境。
安装环境
需要安装什么中间件,我们可以上dockerhub上去搜索,然后选择一个自己想要的版本进行下载,所有dockerhub一定要学会用,并且一般搜索详情页面一般都会给出对应的中间件的安装方式和一些参数说明。
那么接下来我们依次安装一下redis、mysql、nginx、还有jdk
安装redis
首先上dockerHub搜索redis,点击进入详情页之后,拉到下面就可以看到how to use,如果需要选择特定的版本,有Supported tags给我们选择,然后如果拉取最新的版本的话,拉倒下面就教程。
https://hub.docker.com/_/redis
#拉取redis的镜像
docker pull redis
#查看本地redis镜像
docker images
#运行redis(公众号关注:java程序媛之家)
docker run --name myredis -p 6379:6379 -d redis redis-server --appendonly yes
docker run表示运行的意思
--name myredis 表示起个名字叫myredis
-p 6379:6379表示把服务器的6379映射到docker的6379端口,这样就可以通过服务器的端口访问docker的端口
-d 表示以后台服务形式运行redis
redis redis-server --appendonly yes表示开启持久化缓存模式,可以存到硬盘
安装mysql
https://hub.docker.com/_/mysql
MYSQLROOTPASSWORD=admin表示root的初始密码 mysql:5.7.27表示操作的是mysql的5.7.27版本,没有后面的版本号的话,默认是拉取最新版本的mysql。
docker pull mysql:5.7.27
docker run --name mymysql -e MYSQL_ROOT_PASSWORD=admin -d -p 3306:3306 mysql:5.7.27
连上mysql,创建数据库renren_fast,然后把renren-fast的脚本导入进去。脚本位置:https://gitee.com/renrenio/renren-fast/blob/master/db/mysql.sql
安装jdk
然后我们拉取一下jdk的环境,因为renren-fast是个springboot项目,所以我们先提前准备好java环境,这样构建renren-fast项目的时候就不再需要去远程的仓库下载,可以提高项目的构建速度。
只有一行命令,执行完就可以。
#拉群jdk8
docker pull java:8
#查看本地镜像
docker images
打包运行项目
接下来,我们需要先去clone renren-fast项目,对项目进行打包成jar包。
mvn clean package
然后把项目renren-fast.jar包上传到服务器中
在jar包同目录下新建文件:Dockerfile
https://gitee.com/renrenio/renren-fast/blob/master/Dockerfile
vim Dockerfile
#内容如下:
FROM java:8
EXPOSE 8080
VOLUME /tmp
ADD renren-fast.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
参数说明一下:
FROM java:8 表示基于jdk8环境 EXPOSE 8080 表示对外暴露的端口是8080
VOLUME /tmp 表示挂载到/tmp目录 ADD renren-fast.jar /app.jar 表示把jar包复制到镜像服务里面的根目录,并改名称app.jar RUN bash -c 'touch /app.jar' 表示执行创建app.jar ENTRYPOINT ["java","-jar","/app.jar"] 表示执行启动命令java -jar
所以上面的Dockerfile就是构建docker镜像的关键文件,然后在这个目录下执行构建命令:
#构建renren镜像,:0.0.1表示版本号,后面的的.表示当前目录
docker build -t renren:0.0.1 .
#构建完成之后启动项目
docker run -p 8080:8080 renren:0.0.1
ok,然后我们就可以看到项目启动输出的日志的了其实。那平时要去哪看项目的日志呢?查看运行的容器日志:
docker logs -f -t --tail 行数 容器名
ok,致此,后端的服务已经完全构建完成,我们可以通过8080端口访问到我们的后端服务了。接下来我们去搞前端服务。
前端是vue,所以就打包然后放到nginx里面就好。
安装nginx
首先拉取nginx镜像
docker pull nginx
然后启动,一些文件夹进行挂载
docker run -d -p 80:80 -v ~/nginx/www:/usr/share/nginx/html nginx
-v ~/nginx/www:/usr/share/nginx/html表示挂载,把docker内服务的/usr/share/nginx/html挂载到我当前服务器的~/nginx/www目录,所以我们在~/nginx/www放静态文件相当于在docker里的/usr/share/nginx/html放文件。
所以我们打包之后的文件都要上传到~/nginx/www目录。
打包前端
打开renren-fast-vue文件夹,打开cmd命令行,然后运行命令。
由于前端使用vue开发,因此需要安装node.js环境。node.js安装教程:http://nodejs.cn/download/ 下载msi版本安装。
安装之后,命令行窗口,表示安装成功。
然后启动安装
# 安装淘宝的镜像命令
npm install -g cnpm --registry=https://registry.npm.taobao.org
# 安装依赖
cnpm instal
# 打包项目
npm run build
然后你就可以在项目根目录下找到自动生成一个dist文件夹,上传到linux的~/nginx/www目录下。
打开服务器的ip地址加/dist/index.html首页
http://192.168.1.102/dist/index.html
如果遇到了403,这是权限问题,运行一下命令:
chcon -Rt svirt_sandbox_file_t ~/nginx/www
再次访问,运行成功!
总结
好啦,今天的文章先到这里了,有问题,我们留言区见~~~
-END-
看完本文有收获?请转发分享给更多人
关注「java程序媛之家」,提升Java技能
【推荐阅读】
34张深夜监控照,撕开了上亿成年人的伪装
可能是全网最好的MySQL重要知识点
女生这样子对你,100%把你当备胎了
导图梳理springboot手动、自动装配,让springboot不再难懂