企业网站方案设计,免费设计素材库,网站建设计,网页制作设计实验总结tomcat上一节讲到了dockerfile的基础#xff0c;这一次咱们来作一个小的练习首先要了解tomcat安装的整个过程首先搭建 jdk环境#xff1a;下载jdk包#xff0c;解压以后添加环境变量而后搭建tomcat#xff1a;下载tomcat包#xff0c;解压#xff0c;修改配置文件到一个工…tomcat上一节讲到了dockerfile的基础这一次咱们来作一个小的练习首先要了解tomcat安装的整个过程首先搭建 jdk环境下载jdk包解压以后添加环境变量而后搭建tomcat下载tomcat包解压修改配置文件到一个工做目录而后给工做目录加入一些东西访问。javaFrom centosadd ./jdk-8u191-linux-x64.tar.gz /usr/localadd ./apache-tomcat-8.5.35.tar.gz /usr/localENV JAVA_HOME /usr/local/jdkENV CLASSPATH $JAVA_HOME/lib/ENV PATH $PATH:$JAVA_HOME/binRUN mkdir -p /var/www/www.fz.comVOLUME /var/www/www.fz.comRUN cd /usr/local/ mv apache-tomcat-8.5.35 tomcat mv jdk1.8.0_191 jdkcopy ./server.xml /usr/local/tomcat/conf/copy ./mysql-connector-java-5.1.7-bin.jar /usr/local/tomcat/lib/workdir /usr/local/tomcatCMD bash bin/startup.sh tail -f logs/catalina.out这是整个dockerfile的文件。我来一次解释一下From centos这个没什么好说的就是一个基础的centos的源镜像add两个源码包 一个是jdk的一个是tomcat的包ENV这里会设置环境变量就是三个jdk的环境变量RUN执行命令建立一个tomcat的工做目录VOLUME和上面一块儿建立目录以后把他映射到宿主机以即可以在外部把具体的页面代码放入。RUN 运行命令把tomcat放到制定目录并解压copy第一个是把tomcat的配置文件的副本拷贝进去第二个是拷贝jdbc的包以便之后链接数据库时用。workdir后面的命令都是在/usr/local/tomcat下运行最后一个CMD很关键。前面讲过docker的镜像运行以后在执行完命令就会自动关闭必需要给他一个可以挂在后台运行的命令好比说你在run后面会加上 /bin/bash等等让他保持活跃的状态。否则它就会自动关闭。这里若是只有打开tomcat而没有后面的加载日志那么就会在打开以后容器立刻又关闭了。因此docker ps就看不见 须要用 ps -a看全部的容器会发现容器是关闭的。 就须要用刷新日志的方式让tomcat在后台与进行。保持容器的开启状态。前面的须要的文件放在和dockerfile一个目录下ok了。而后编译运行而后运行中间一部分省略就能够看见相似与平时的开启tomcat的日志若是不想要在前台看日志能够-d挂入后台。如上图所示mysql mysql源码安装mysql源码安装的大体过程1.下载源码包下载一些依赖包例如gcc等2.编译安装3.建立用户和组并赋予权限而后数据库初始化4.设置数据库root密码linuxfrom centosADD ./mysql-5.6.35.tar.gz /usr/local/RUN yum install gcc gcc-c ncurses-devel perl cmake make autoconf -yRUN cd /usr/local/mysql-5.6.35 cmake -DCMAKE_INSTALL_PREFIX/usr/local/mysql \ make make installRUN groupadd mysql useradd -r -g mysql mysql \chown -R mysql:mysql /usr/local/mysqlENV PATH /usr/local/mysql/bin:/usr/local/mysql/lib:$PATHworkdir /usr/local/mysqlRUN scripts/mysql_install_db --usermysql --basedir/usr/local/mysql \--datadir/usr/local/mysql/data --pid-file/usr/local/mysql/data/mysql.pidRUN support-files/mysql.server start mysqladmin -u root password redhatCOPY ./test.sql /root/RUN support-files/mysql.server start mysql -uroot -predhat /root/test.sqlCMD mysqld --usermysql这是个人dockerfile文件依次解释from镜像源add把源码包copy进去并解压run 第一个是下载一些依赖包第二个是编译安装。第三个是用户和权限。env环境变量workdir 工做目录设在mysql目录下run数据库初始化第二个是开启服务并修改root密码这里我踩了一个坑修改密码是要在开启服务的状态下的一开始我没有开服务会出错。第二次我知道了要开服务而后我是先在前面开服务在后面在加一个run修改密码也会出错为何呢由于dockerfile每一行命令都是把镜像生成一个容器而后在容器内执行命令子啊构建成新的镜像这样一来上一个镜像是开启服务像开启服务把他单独列在一行是没有效果的由于生成容器开启服务再生成镜像还会同样的镜像下一个执行修改root密码命令时候已是一个新的镜像了因此服务是没打开的。copy而后就是拷贝我本身写的一个mysql的脚本进入dockerrun这个是开启服务而且执行脚本然数据库生成表插入数据cmd这个是前台开启数据库服务。像前面一个编译并开启就ok了这里数据库的编译是最基础的没有不少参数有需求本身加而后这里的编译须要的时间可能会有点久。c