银河麒麟系统下Docker+Dockerfile打包tomcat+nginx代理指向tomcat静态资源+springboot的jar包(包含配置Kylin-4.0.2-server系统的yum源)

前言:

因为项目需求,需要在银河麒麟Kylin-4.0.2-server(其他版本如V10也可以)系统安装docker并将项目打成镜像,并实现nginx容器指向tomcat容器中的静态资源。

1. 离线安装docker

2. 编写Dockerfile文件

3. 打包并配置nginx

整体流程:

一、离线安装docker

        离线包网址:Index of linux/debian/dists/stretch/pool/stable/https://download.docker.com/linux/debian/dists/stretch/pool/stable/

这里需要注意,银河麒麟的版本的是arrch64为的,arrch64与arm64位是一样的。

 

 选择与自己服务器系统匹配的版本,查看服务器系统版本:cat /proc/version

使用命令dpkg -i  XXX.deb安装,这里需要主要一点,一共需要安装三个deb,切记!!!!

 安装完成后启动 :systemctl start docker

 二、 Dockerfile打包springBoot生产的jar包镜像

下载麒麟系统对应的jdk,这里我还是用自己的jdk打包,这里读者自行下载吧,找不到链接了。将Dockerfile文档+jdk+项目jar包放到一个目录中

首先拉取父镜像,命令为:docker pull centos

拉取成功后,配置Dockerfile文件:

# 定义父镜像
FROM centos
# 将jar包添加到容器
ADD jdk-8u331-linux-aarch64.tar.gz /usr/local/
ADD middleware.jar /usr/local/middleware.jar
ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_331
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
# 定义容器启动执行的命令
CMD java -jar /usr/local/middleware.jar

生成镜像命令:

docker build -t 镜像名称 .

特别注意,容器名称后有一个  “.”,别忘记加。

执行完成,查看镜像:

docker images;

查看镜像:

生成容器:

docker run --name 容器名 -p 9001:9001 镜像名称

 查看容器:

docker ps -a    //查看所有的容器

docker ps       //查看正在运行的容器

出现如下信息为成功:

查看日志:

docker logs --tail=1000 容器名称

三、打包tomcat镜像,并发布项目

与第二个一致,将项目文件放到统一目录下:

编写Dockerfile文件:

FROM centos

#从本地将jdk和tomcat的压缩包,复制到容器的/usr/local目录下去,并自动解压
ADD apache-tomcat-8.5.66.tar.gz /usr/local

#声明工作目录,并通过WORKDIR命令,切换到工作目录
ENV MYPATH /usr/local
WORKDIR $MYPATH

#环境变量设置,最终将java和tomcat都配置到PATH中
ENV JAVA_HOME /mnt/jdk1.8.0_331
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:#JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.66
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.66
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

#对外暴露8080端口
EXPOSE 8080

#执行tomcat的启动命令,并通过tail -f命令,持续跟踪日志输出
CMD /usr/local/apache-tomcat-8.5.66/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.5.66/logs/catalina.out

生成镜像:

docker build -t 容器名称 .

生成容器:

docker run -d -p 7001:8080 --name hzftomcat --privileged=true -v /home/slime/:/usr/local/apache-tomcat-8.5.66/webapps/ -v /home/slime/tomcatlogs/:/usr/local/apache-tomcat-8.5.66/logs 镜像名

注意:这里的 /home/slime/ 为本地目录,这里存放的是web项目,/usr/local/apache-tomcat-8.5.66/webapps/ 这个目录为tomcat容器里的目录,将本地目录映射到tomcat里,logs目录同理。

接下来可以去浏览器访问查看是否成功了。

四、打包nginx镜像,并配置代理指向tomcat本地的静态资源

这里我直接使用网络下载的nginx镜像,命令为:

docker pull nginx

创建容器:

docker run --name nginx01 -p 8082:8082 -v /home/slime/nginx.conf:/etc/nginx/nginx.conf -v /home/slime/hy/webas/army-green:/etc/nginx/army -v /home/slime/log:/var/log/nginx -d nginx

启动之前需要做一些配置:

        因为我外部使用的是8082端口访问,所以,我这里使用nginx内部的8082端口映射外部的8082。

        /home/slime/nginx.conf:/etc/nginx/nginx.conf   本地创建nginx.conf文件覆盖容器里的nginx.conf文件。

        具体配置信息如下:

    

         /home/slime/hy/webas/army-green:/etc/nginx/army    本地静态文件位置(即tomcat下的weapps里的web项目里的静态资源文件)挂载到容器里的army中。

至此,所以打包镜像和配置结束。这里我整理了一下docker常用命令:

打包容器:
 docker build -t 容器名称 .

查看日志:
docker logs --tail=1000 容器名称

创建tomcat容器:
docker run -d -p 7001:8080 --name hzftomcat --privileged=true -v /home/slime/:/usr/local/apache-tomcat-8.5.66/webapps/ -v /home/slime/tomcatlogs/:/usr/local/apache-tomcat-8.5.66/logs diytomcat

创建nginx
docker run --name nginx01 -p 8082:8082 -v /home/slime/nginx.conf:/etc/nginx/nginx.conf -v /home/slime/hy/webas/army-green:/etc/nginx/army -v /home/slime/log:/var/log/nginx -d nginx

启动容器:
docker start 容器ID

进入容器:
	docker exec -it nginx01 /bin/bash
	whereis nginx
	cd /etc/nginx

查看容器环境
docker inspect 容器ID|容器名称

从docker上拷贝文件到本地
docker cp nginx:/etc/nginx/default.conf /home/

将default.conf拷贝回nginx容器内 
docker cp /home/default.conf nginx:/etc/nginx/conf.d/

导出镜像:
docker save -o <保存路径> <镜像名称:标签>  [<镜像名称:标签> ... ]
docker save -o ./middlewareImage.tar diddleware:latest

//gzip 保存映像文件
docker save myimage:latest | gzip > myimage_latest.tar.gz

导入镜像:
docker load --input ./middlewareImage.tar

导出容器:
docker export <容器名> > <保存路径>
docker export ubuntu18 > ./ubuntu18.tar
导入容器:
docker import <文件路径>  <容器名>
docker import ./ubuntu18.tar ubuntu18

总结:
save保存的是镜像,export保存的是容器
load用来载入镜像包,import用来载入容器包,但两者都会恢复为镜像
load不能对载入的镜像重命名,而import可以为镜像指定新名称
load不能载入容器包,import能载入镜像包,但不能使用

补充知识:

export导出的是容器,但是用import导入的确实镜像,想要运行这个镜像,需要在启动的时候添加command,否则会报错。具体的command需要在导出容器的时候通过docker ps查看到。

如果command太长,docker ps 查看不全,则使用:

docker ps --no-trunc

 查看

启动:

docker run --name mysql02 -e MYSQL_ROOT_PASSWORD=123456  -d -p 3306:3306_mysql:5.7.0 /entrypoint.sh mysqld  

配置agt-get网络源 

在系统的/etc/apt/sources.list文件中,根据不同版本填入以下内容,可以看到以下操作系统均是基于ubuntu定制的,4.0.2sp2-server使用的是kord的包,kylin可能对应的是中标麒麟的.

#4.0.2桌面版本:
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 4.0.2-desktop main restricted universe multiverse
#4.0.2-sp1桌面版本:
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 4.0.2sp1-desktop main restricted universe multiverse
#4.0.2-sp2桌面版本:
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 4.0.2sp2-desktop main restricted universe multiverse
#4.0.2服务器版本:
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 4.0.2-server main restricted universe multiverse
#4.0.2-sp1服务器版本:
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 4.0.2sp1-server main restricted universe multiverse
#4.0.2-sp2服务器版本:
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 4.0.2sp2-server main restricted universe multiverse
#4.0.2-sp2 FT2000+服务器版本:
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 4.0.2sp2-server-ft2000 main restricted universe multiverse
#4.0.2-sp3桌面版本:
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 4.0.2sp3-desktop main restricted universe multiverse
#4.0.2-sp3服务器版本:
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 4.0.2sp3-server main restricted universe multiverse

apt-get常用命令

命令     作用
apt-get update更新源文件,并不会做任何安装升级操作
apt-get upgrade升级所有已安装的包
apt-get install packagename安装指定的包
apt-get install packagename --only-upgrade  仅升级指定的包
apt-get install packagename --reinstall 重新安装包
apt-get -f install修复安装
apt-get build-dep packagename安装相关的编译环境
apt-get source packagename 下载该包的源代码
apt-get dist-upgrade升级系统
apt-get dselect-upgrade使用 dselect 升级
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值