springboot项目部署阿里云
服务器数据库连接
本地springboot+JPA项目部署阿里云服务器之前,先把数据库连接方式改成连接服务器的ip地址:
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://47.95.226.179:3306/blog?useUnicode=true&characterEncoding=utf-8&useOldAliasMetadataBehavior=true
username: root
password: root
拉取数据库镜像并创建mysql容器
docker run -di --name=mysql__container -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
生成项目镜像
springboot项目打包成jar包,上传至阿里云root目录下,在mv到当前路径:/usr/local/myblog/dockerjdk11/
当前路径下 vi Dockerfile
# 因为jdk必须运行在操作系统之上
FROM centos:7
#指定镜像创建者信息
MAINTAINER zhangdonghui
# 创建一个新目录来存储jdk文件
RUN mkdir /usr/local/java
#将jdk压缩文件复制到镜像中,它将自动解压缩tar文件
ADD jdk-11.0.8_linux-x64_bin.tar.gz /usr/local/java/
# 创建软连接 ln -s 源文件 目标文件
RUN ln -s /usr/local/java/jdk-11.0.8 /usr/local/java/jdk
# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk-11.0.8
ENV PATH $JAVA_HOME/bin:$PATH
# VOLUME 指定了临时文件目录为/tmp
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD blog.jar /app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
然后执行镜像的命令 docker build -t myblog_image .
创建两个blog容器
日志目录挂载:docker run -di --name=myblog1_container -p 8081:8080 -v /usr/local/myblog/log:/log myblogdocker
日志目录挂载:docker run -di --name=myblog2_container -p 8082:8080 -v /usr/local/myblog/log:/log myblogdocker
-d 表示后台运行
-h 容器的主机名
-p port1:port2 port1服务器的端口 port2 容器内端口
-name 容器名称
最后一个参数为镜像名称
-v 宿主机目录:容器目录
拉取nginx镜像
docker pull nginx
创建nginx容器
docker run -id --name=mynginx_container -p 80:80 -v /usr/local/myblog/mynginx:/etc/nginx nginx -v /usr/local/myblog/mynginx/log:/var/log/nginx
配置nginx负载均衡
nginx的配置文件在容器的/etc/nginx/所以这里为了方便 先把配置文件拷贝出来
docker cp mynginx_container:/etc/nginx/nginx.conf nginx.conf
vi nginx.conf修改配置文件
#gzip on;
upstream zhangdonghui {
server 47.95.226.179:8081 weight=1;
server 47.95.226.179:8082 weight=2;
}
upstream zhangdonghui
下面配置的就是两个web应用所在的的ip地址以及端口号
注意下面的include /etc/nginx/conf.d/*.conf;
意思是导入的配置文件 在 /etc/nginx/conf.d/*.conf;下面
继续将 /etc/nginx/conf.d/*.conf;下面的配置文件拷贝出来修改
docker cp mynginx_container:/etc/nginx/conf.d/default.conf default.conf
location / {
proxy_pass http://zhangdonghui;//实现nginx代理,随机访问tomcat1和tomcat2
proxy_redirect default;//设置默认的nginx代理,而不是访问下面的默认的nginx的index.html页面
#root /usr/share/nginx/html;
#index index.html index.htm;
}
在location / {}里面添加proxy_pass http://zhangdonghui; 添加后wq保存
然后将两个配置文件拷贝回去
docker cp nginx.conf mynginx_container:/etc/nginx/nginx.conf
docker cp default.conf mynginx_container:/etc/nginx/conf.d/default.conf
重启nginx
docker restart mynginx_container
查看容器日志
Linux系统显示时间与日期的命令是date,直接输入date命令将会显示时间日期,也可以输入date +%H:%M只显示时间。
docker容器时间与宿主机时间不一致问题
容器内修改时区
docker exec -it <容器名> /bin/bash
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
docker restart <容器名>
tail 动态查看日志
tail -f filename 查看日志,动态监控日志,日志一有变化就打印出来
tail -f filename |grep xxxx 动态监控日志信息,管道符后面的grep表示匹配xxxx的内容
tail -n 3 filename 打印出最后3条日志信息
ctrl+c 就可以退出查看日志模式
tomcat镜像拉取与容器创建
docker run -di --name=mytomcat -p 1314:8080 -v /usr/local/myblog/webapps:/usr/local/tomcat/webapps tomcat
扩展知识
ps -aux|grep nginx:查看某个进程是否存在。
kill pid:杀死已经启动的某个进程