实战:编写dockerfile发布Tomcat镜像
上一篇文章讲了dockerfile是如何构建的,那么这篇就来将如何实操
编写Tomcat镜像
1、准备镜像文件
准备tomcat 和 jdk 到当前目录,编写好README (touch README.txt)
$ docker-tomcat ls
apache-tomcat-9.0.62.tar.gz dockerfile jdk-8u333-linux-x64.tar.gz README
2、编写Dokerfile
编写dockerfile文件,官方命名:Dokerfile
,build会自动寻找这个文件,就不需要-f指定了。
$ vim Dockerfile
FROM centos:7 # 基础镜像centos
MAINTAINER hxl<1078213484@qq.com> # 作者
COPY README.txt /usr/local/README.txt # 复制README文件
ADD jdk-8u333-linux-x64.tar.gz /usr/local/ # 添加jdk,ADD 命令会自动解压,根据自己下载的压缩包进行修改
ADD apache-tomcat-9.0.62.tar.gz /usr/local/ # 添加tomcat,ADD 命令会自动解压
RUN yum -y install vim # 安装 vim 命令
ENV MYPATH /usr/local # 环境变量设置 工作目录
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_333 # 环境变量: JAVA_HOME环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.62 # 环境变量: tomcat环境变量
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.62
# 设置环境变量 分隔符是:
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080 # 设置暴露的端口
CMD /usr/local/apache-tomcat-9.0.62/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.62/logs/catalina.out # 设置默认命令
#保存:wq
3、构建镜像
# 因为dockerfile命名使用默认命名 因此不用使用-f 指定文件
$ docker build -t mytomcat:0.1 .
4、run镜像
# -d:后台运行 -p:暴露端口 --name:别名 -v:绑定路径
$ docker run -d -p 8080:8080 --name tomcat01 -v /home/hxl/build/tomcat/test:/usr/local/apache-tomcat-9.0.62/webapps/test -v /home/hxl/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.62/logs mytomcat:0.1
5、访问测试
# docker exec -it 自定义容器的id /bin/bash
$ docker exec -it a59werd9e79q /bin/bash
#不能在容器里面测,需要在宿主机上测
$ curl localhost:8080
6、发布项目
由于做了卷挂载,我们直接在本地编写项目就可以发布了!
$ vim index.jsp
发现:项目部署成功,可以直接访问!
我们以后开发的步骤:需要掌握Dockerfile的编写!我们之后的一切都是使用docker镜像来发布运行!
注意看日志,以及关闭防火墙systemctl stop firewalld
发布自己的镜像
发布到 Docker Hub
1、地址 https://hub.docker.com/
2、确定账号可以登录
3、登录
$ 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
$ docker login -u 你的用户名 -p 你的密码
4、提交 push镜像
$ docker push mytomcat
如果发现push不上去,因为如果没有前缀的话默认是push到官方的library
解决方法:
# 第一种 build的时候添加你的dockerhub用户名,然后在push就可以放到自己的仓库了
# 作者名/镜像名:版本号
$ docker build -t hxl/mytomcat:0.1 .
# 第二种 使用docker tag 再push
$ docker tag 容器id hxl/mytomcat:1.0
# 再次push
$ docker push hxl/mytomcat:1.0
发布到 阿里云镜像服务上
官网 https://cr.console.aliyun.com/repository/
$ sudo docker login --username=Hxl registry.cn-shenzhen.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/dsadxzc/cheng:[镜像版本号]
# 修改id 和 版本
sudo docker tag a59werd9e79q registry.cn-shenzhen.aliyuncs.com/dsadxzc/qin:1.0
# 修改版本
$ sudo docker push registry.cn-shenzhen.aliyuncs.com/dsadxzc/qin:[镜像版本号]