实战Tomcat镜像
ps:此时腾讯云的服务器到期了,我用了自己的小服务器,所以改名了
1、准备镜像文件 准备tomcat的压缩包,tomcat是依赖于Java的,所以还需要jdk的压缩包!
去官网下载后XFtp到home/zhuozhuo/tomcat目录下
2、编写DockerFile文件,官方命名DockerFile,我们也这么命名,在build 的时候会自动寻找这个文件,就不需要-f指定了
# 以下是上课学习的代码
FROM centos
MAINTAINER zhuozhuo<787934074@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD apache-tomcat-9.0.67.tar.gz /usr/local
ADD jdk-8u341-linux-x64.tar.gz /usr/local
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_341
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.67
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.67
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.67/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.67/bin/logs/
catalina.out
实际上在我自己操作的时候发现出现以下问题。
分析了以下原因,课程中的时间在centos project停止支持centos linux之前,所以没有报错。而我学习的时间在这之后。
镜像构造到该步骤就会报错,这个问题在很久之前也遇到过
解决方案可见
其实就是centos需要换个源。
解决方案也很简单,在DockerFile中添加这些换源的步骤就好了
FROM centos
MAINTAINER zhuozhuo<787934074@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD apache-tomcat-9.0.67.tar.gz /usr/local
ADD jdk-8u341-linux-x64.tar.gz /usr/local
# 以下为解决‘appstream’报错的方法
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum makecache
RUN yum update -y
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_341
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.67
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.67
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.67/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.67/bin/logs/catalina.out
3、构建镜像
# docker build -t diymytomcat .
效果如下所示
运行镜像
docker run -d -p 9090:8080 --name zhuozhuotomcat -v /home/zhuozhuo/build/tomcat/test:/usr/local/apache-tomcat-9.0.67/webapps/test -v /home/zhuozhuo/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.67/logs diymytomcat
问题是目前是用的自己的NUC+内网穿透做的,所以目前不可能从外网访问9090端口来测试,只能使用127.0.0.1:9090来访问。emmmm好像花了大功夫白整了嗐。
然后去看了下腾讯云华为云阿里云,哪个还有学生优惠啥的(云服务器是真贵啊!),阿里云已经开了一个学生优惠了不能再开了,华为云的有些小贵,便宜的要120左右(一年),腾讯云的这个活动还不错,65元租一年,还不用担心流量不够之类的问题,我直接拿下(不是打广告hhh)。
4、启动镜像
5、访问测试
ok继续测试,进行访问测试,结果如下
6、发布项目(由于做了卷的挂载,所以直接在本地编写项目就可以发布了)
网上随便找的
WEB-INF/web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>
<%page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta charset="utf-8">
<title>hello,zhuozhuo</title>
</head>
<body>
Hello World!<br/>
<%
System.out.println("------my test web logs-------");
%>
</body>
</html>
注意,复制粘贴的时候最后body和html会多出一个百分号,记得删掉
效果如下:
查看tomcatlogs中的catalina.out日志
项目部署成功,可以直接访问。
发布自己的镜像
发布到DockerHub上
1、地址注册自己的账号
2、确定该账号可以登录
3、在我们的服务器上提交自己的镜像
[root@VM-8-6-centos zhuozhuo]# docker login --help
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username
登录后如图所示:
4、登录完毕后可以提交自己的镜像,就是docker push
# push自己的镜像到服务器上
[root@VM-8-6-centos zhuozhuo]# docker push diymytomcat
Using default tag: latest
The push refers to repository [docker.io/library/diymytomcat]
e23f9548a69d: Preparing
...
74ddd0ec08fa: Waiting
denied: requested access to the resource is denied # 拒绝
# push镜像的问题?
[root@VM-8-6-centos zhuozhuo]# docker push wangyuanzhuo/diymytomcat:2.0
The push refers to repository [docker.io/wangyuanzhuo/diymytomcat]
An image does not exist locally with the tag: wangyuanzhuo/diymytomcat
# 希望提交时带上作者的信息
# 于是将我之前的那个diymytomcat加上版本号,同时改了个名
[root@VM-8-6-centos zhuozhuo]# docker tag c8c4ad9c5a1b wangyuanzhuo/tomcat:1.0
# 之后再进行push就可以了
[root@VM-8-6-centos zhuozhuo]# docker push wangyuanzhuo/tomcat:1.0
The push refers to repository [docker.io/wangyuanzhuo/tomcat]
e23f9548a69d: Pushing 10.24MB/67.08MB
02541d2d4519: Pushing 14.33MB/289.3MB
0d98f8beabf5: Pushing 3.829MB/27.22MB
fd2d58e5873f: Pushed
90021802da6a: Pushed
14d1d075ebee: Pushing 3.308MB/369.8MB
336cbd28c39c: Pushing 3.876MB/16.11MB
f75bf34a1e01: Waiting
74ddd0ec08fa: Waiting
# 提交的时候也是按照镜像的层级来进行提交的!
发布到阿里云服务上
1、登录阿里云
2、找到容器镜像服务
3、创建命名空间
4、创建容器镜像仓库
5、浏览阿里云,点击到仓库地址里
这个相当详细了,里面各种命令都有
登录阿里云镜像仓库
直接上传会报错,信息不对应,按照阿里云的要求修改镜像的tag之后就能正常push了。
太大了就不真推送了直接ctrl+C
push好的镜像可以在自己的阿里云的镜像仓库中看到
阿里云容器镜像的参考官方地址就可以了,真的很详细(不是打广告)
到这里就先告一段落了!
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://wangyuanzhuo.top/docker%e5%ad%a6%e4%b9%a0%e8%ae%b0%e5%bd%954/