Docker部署OKR项目复盘

Docker部署OKR项目复盘

一、本地运行OKR项目

 (1)首页中英文乱码的问题:编码逻辑的问题
 参考地址:
 https://www.cnblogs.com/shihaiming/p/7792876.html
 https://www.cnblogs.com/kingsonfu/p/10395522.html
 
 (2)数据库初始化的时候会异常,因为Mysql的connection的问题
 
 (3)图片无法正常上传,阿里的镜像文件配置的问题,需要调整下配置

二、Linux常用命令,温习

  • vi的基本操作,插入,修改,退出,缓存文件

参考地址:https://blog.csdn.net/kenhins/article/details/50781071

  • sudo角色切换的基本操作

  • service,systemctl服务的基本操作

  • netstat,ipconfig网络服务的基本操作

  • yum的基本操作

  • wget工具的使用

  • 压缩与解压的使用

  • Docker常用的命令:参考:https://www.runoob.com/docker/docker-container-usage.html

docker kill 312eac170c03(docker关掉镜像服务)
docker run -d -p 8080:8080 tomcat (运行Tomcat的服务到8080端口)
docker run -d -p 80:80 nginx(运行Nginx服务到80端口)
docker ps(查看docker运行中的镜像)
docker ps -a (查看所有的docker服务,包括已经关闭的)
docker exec -it 312eac170c03 /bin/bash(根据镜像ID访问镜像内部:方式1)
docker exec -it 312eac170c03 sh(根据镜像ID访问镜像内部:方式2)
exit (退出镜像内部,返回linux环境)
docker logs --tail 30000 -f wstever(查看实时的项目输出)

参考地址:https://www.cnblogs.com/q4486233/p/6482711.html

(一系列的删除镜像,容器的操作,因为会有容器占用的问题,忽略ID,此处只是示意)
docker stop 9df85803323b
docker kill 9df85803323b
docker rmi 3218b38490ce
docker rm -f d05460bd8127

  • history相关的命令

cd ~
ls -a
history > okr_deploy.txt (history的内容重定向到文件中)

三、 使用阿里云的轻量级服务器操作,添加你需要开放的端口

(1)可以通过web端,直接进入到服务中
ifconfig(查看机器的IP地址,测试看看是否是IP地址的问题)

(2)直接通过putty,或xshell客户端连接,注意事项:一定要加上root的密码

(3)使用终端查看地址:

(4)开放防火墙的端口号:
本项目包括:

  • 8080:tomcat端口(测试用)
  • 80:nginx端口(测试用)
  • 3306:mysql服务对外端口
  • 8088:OKR项目对外端口

注意:8080端口,必须要对外开放出去,否则外面不能访问设置地址在防火墙那里。
service firewalld stop(关闭防火墙,其实不是防火墙的问题)

四、在阿里云轻量云服务器,安装JDK

cd opt (切换到opt目录中)
mkdir java(新建文件夹Java)
cd java(切换到java目录中)

失败(方法1:想要通过wget去下载jdk1.8,下载之后,发现无法解压!)
wget http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
tar -zxvf jdk-8u131-linux-x64.tar.gz(解压尝试1)
tar -xvf jdk-8u131-linux-x64.tar.gz(解压尝试2)

成功(方法2:想要通过yum去下载jdk1.8)
yum list java* (查看java源)
yum list java8 (查看java8的源)
yum install java-1.8.0-openjdk* -y (安装java8的源)
java -version(校验是否下载成功)
javac -version(校验是否下载成功)

五、安装 Docker,注意daemon.json的编写,可以用阿里云的

参考:https://www.cnblogs.com/jim-xu/p/11788726.html

yum install docker (使用yum来安装docker)
service docker start (启动Docker服务,如果启动异常,很有可能是daemon.json的编写有误)
service docker start
docker version (查看docker是否安装成功)
vi /etc/docker/daemon.json (编写docker的daemon.json,镜像文件)
cd /etc/docker (访问docker配置文件所在目录)
vi daemon.json(编写daemon.json文件)
systemctl daemon-reload (重启docker的daemon.json,镜像文件)
systemctl restart docker.service(重启docker的服务)
docker logs --tail  30000 -f  burt(查看服务内部运行的输出)

六、(测试用)安装Nginx,开放80端口对外访问

docker search nginx (查看是否有Nginx的镜像)
docker pull nginx(拉去Nginx的镜像)
docker image ls(查看所有的镜像列表:方式1)
docker images(查看所有的镜像列表:方式2)
yum install -y libseccomp-devel  (安装依赖,缺少插件会报错cannot start a stopped process: unknow) 
docker run -d -p 80:80 nginx (运行Nginx,开放80端口)
docker ps(查看目前运行中的镜像内容)
netstat -tunlp |grep 80(查看80端口号是否被Nginx占用了?还是端口冲突了)
docker exec -it 312eac170c03 /bin/bash(访问到Nginx内部容器:方式1)
docker exec -it 312eac170c03 sh(访问到Nginx内部容器:方式2)

直接外部访问80端口,验证是否安装成功?因为默认已经开放了这个端口,所以可以访问

七、(测试用)安装 Tomcat,开放8080端口

参考地址:
https://blog.csdn.net/u011374582/article/details/82867242
https://www.cnblogs.com/jxldjsn/p/10540549.html
https://www.cnblogs.com/xiaozhang666/p/12382114.html

docker ps  (查看目前)
docker pull tomcat (去docker中拉去tomcat)
docker images (查看所有的docker镜像)
docker run -d -p 8080:8080 tomcat (运行Tomcat)
sudo docker run -d -p 8080:8080 tomcat (切换root用户去运行Tomcat)
yum update (可能会需要进行yum文件的更新,需要比较长的时间)
docker exec -it 312eac170c03 sh (进入Tomcat容器内部:方式1)
docker exec -it 312eac170c03 /bin/bash(进入Tomcat容器内部:方式2)
wget http://www.localhost:8080 (测试看看本机能到正常访问到Tomcat的内部)
docker restart 312eac170c03(重启镜像服务)

八、在Docker中部署Mysql项目

参考:
https://blog.csdn.net/u013068184/article/details/89434781
https://blog.csdn.net/You_are_my_Mr_Right/article/details/100512956
https://blog.csdn.net/qq_35868412/article/details/82874778

备注1:因为阿里云的服务,无法链接公司内部的Mysql服务。只能通过再安装一个Mysql服务。

备注2:一定要安装5.7版本低版本的mysql,防止远程客户端链接不上的异常。

(1)失败的尝试:安装最新mysql,最新版本的mysql有安全限制

参考地址:https://www.cnblogs.com/zhurong/p/9898675.html

docker pull mysql:latest (拉取最新的)
docker images(查看所有的镜像,看是否安装了最新版本的Mysql)
docker run -d --name wstever -p 8088:8088 burt/demo (部署项目)
docker logs --tail  30000 -f  wstever(查看实时的输出,会有Mysql链接不上的报错)
docker images(查看所有的镜像,发现安装的是最新版本的mysql,本机客户端链接异常)
docker run -itd --name mysql-burt -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Aa123456 mysql(docker运行mysql最新版本)
docker ps(查看啊是否安装成功)
docker exec -it mysql-burt bash(进入mysql-burt内部) 
> mysql -h localhost -u -root -p(在内部执行,查看mysql的版本号)

(一系列的删除镜像,容器的操作,因为会有容器占用的问题,忽略ID,此处只是示意)
 docker stop 9df85803323b
 docker kill 9df85803323b
 docker rmi 3218b38490ce
  docker rm -f d05460bd8127

(2)错误的尝试:大小写敏感问题,Mysql中的终端内部没有vi的问题

(1)遇到了Linux和Windows下的大小写敏感问题,这会导致Quartz中的大写的表异常
详细问题描述见地址:https://www.cnblogs.com/z_lb/articles/8352013.html
https://blog.csdn.net/ohh_lang/article/details/120542797
https://blog.csdn.net/p793049488/article/details/108365929
重要:这种做法,最好数据要备份,防止丢失。

find / -name my.cnf
vi /etc/mysql/my.cnf

(2)Mysql中的终端内部没有vi,需要安装vim,才能修改Mysql的配置文件(错误尝试)
参考地址:https://blog.csdn.net/weixin_32301287/article/details/113639464

(3)成功的尝试:安装5.7版本的mysql,并在运行时,就配置到文件

docker pull mysql:5.7(拉取mysql5.7版本的镜像)
docker images(docker镜像查看)
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Aa123456 --name mysql-wst mysql:5.7 --lower-case-table-names=1 (运行docker镜像)
docker ps(查看是否正常运行mysql服务)
docker exec -it mysql-wst bash(运行进入mysql容器内部)
mysql -uroot -p(进入到mysql中执行 ,应该要输入数据库密码,用于测试是否能够正常登录到mysql)

参考的命令如下:

其他步骤包括:

  1. 本地Navicat客户端链接远程的Mysql服务

  2. 检查是否能够忽略大小写问题

  3. 将代码指向的数据库改为远程的数据服务

  4. 重新项目文件并发布docker服务

docker build -t burt/demo . (重新构建项目)
docker run -d --name burt -p 8088:8088 burt/demo (运行项目)
 docker logs --tail  30000 -f  burt (查看项目的实时输出)

九、Maven打成jar包并部署OKR项目到Docker上

参考地址:https://blog.csdn.net/cookie_turbo/article/details/105274606

(1)maven操作clean,install,package步骤后, 生成jar文件,访问target目录拿到jar包
(2)将jar包通过终端上传服务器目录中
(3)编写dockerfile文件 (同级目录中)

参考以下dockerfile文件,Dockerfile文件参考

Docker部署OKR项目复盘

(4)

cd /opt/java/ (访问到指定目录,dockerfile也是上传到当前目录的)
docker build -t burt/demo .(运行构建docker的服务,le的文件)
docker run -d --name burt -p 8088:8088 burt/demo(运行项目)
docker run -d --name wstever -p 8088:8088 burt/demo (可能名字重复了,可以换一个)
docker run -d --name wst -p 8088:8088 burt/demo (可能名字重复了,可以换一个)
docker ps(查看docker服务是否已正常访问)
docker logs --tail  30000 -f  burt(查看实时的输出)
docker logs --tail  30000 -f  wstever(查看实时的输出)
docker logs --tail  30000 -f  wst (查看实时的输出)
docker kill burt(关闭docker的服务)
docker kill wstever(关闭docker的服务)
docker kill wst(关闭docker的服务)
docker ps(再次查看docker服务是否已正常关闭)
docker ps -a (查看所有的docker服务,包括已经关闭的)

十、总结

(1)Docker是非常好用的东西,减少了很多复杂的配置的问题
(2)如果代码没有思路的话,可以百度找找灵感
(3)云服务器,其实也没有啥啊,一个终端搞定!
(4)Markdown文件还是不错的,继续保持!
(5)Mysql5.7版本多人用是有理由的!
(6)使用Linux中的history做代码复盘还不错哦。

上一篇:【okr】sql优化


下一篇:「绩效变革」和「绩效沟通」精选文章合集