之前利用docker 部署了一个ssm项目,当时没有配置tomcat随容器启动而启动,导致启动容器后,还需要进入容器开启tomcat服务才可以,mysql 当时利用 systemctl enable mysqld开机启动服务,不用在手动启动了,下面介绍tomcat服务开机自启动,有以下三种
类似于window系统的默认启动程序,开机会自启动 打开 /etc/rc.d/rc.local 文件,添加如下信息,因为shell不能读取系统的环境变量,所以需要添加Java环境变量,当然你也可以使用其他方法添加环境变量,注意将路径修改为你的 tomcat 安装路径
export JAVA_HOME=/usr/local/jdk1.8.0_161 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jsr export PATH=$JAVA_HOME/bin:$PATH /usr/local/apache-tomcat-8.5.55/bin/startup.sh start新建服务脚本
vi /etc/init.d/tomcat脚本内容如下(环境变量你可以试着先不加,如果报错需要环境变量再加)
#!/bin/bash # description: Tomcat8 Start Stop Restart # processname: tomcat8.5.55 # chkconfig: 234 20 80 export JAVA_HOME=/usr/local/jdk1.8.0_161 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jsr export PATH=$JAVA_HOME/bin:$PATH CATALINA_HOME=/usr/local/apache-tomcat-8.5.55 case $1 in start) sh $CATALINA_HOME/bin/startup.sh ;; stop) sh $CATALINA_HOME/bin/shutdown.sh ;; restart) sh $CATALINA_HOME/bin/shutdown.sh sh $CATALINA_HOME/bin/startup.sh ;; *) echo 'please use : tomcat {start | stop | restart}' ;; esac exit 0常用命令
向chkconfig添加 tomcat 服务 chkconfig --add tomcat 开启tomcat服务自启动 chkconfig tomcat on 启动/停止/重启 service tomcat start/stop/restart 关闭tomcat服务自启动: chkconfig tomcat off 删除chkconfig的tomcat服务 chkconfig –del tomcat想了解更多的 chkconfig 命令参考下面连接 链接: https://www.cnblogs.com/ftl1012/p/chkconfig.html.
在/usr/lib/systemd/system/目录下新建立tomcat.service文件
vi /usr/lib/systemd/system/tomcat.service添加如下信息()
[Unit] Description=java tomcat After=tomcat service [Service] Type=forking ExecStart=/usr/local/apache-tomcat-8.5.55/bin/startup.sh ExecReload=/usr/local/apache-tomcat-8.5.55/bin/restart.sh ExecStop=/usr/local/apache-tomcat-8.5.55/bin/shutdown.sh [Install] WantedBy=multi-user.targettomcat.service文件依然不能使用系统配置的环境变量,所以仍然需要配置环境变量,问题如下
java -version systemctl daemon-reload systemctl enable tomcat systemctl start tomcat systemctl status tomcat.service命令详解参考下面的 3) 、基本使用 如果大家遇到这种情况,可以参考我的另一篇博客 链接: https://blog.csdn.net/qq_41538097/article/details/107110230. 添加环境变量 tomcat.service 服务主要启动 就是执行 startup.sh 脚本,最后将环境变量直接加入 startup.sh脚本中
vi /usr/local/apache-tomcat-8.5.55/bin/startup.sh如图服务可以正常启动 以下连接方法你们可以试试,不过我都没解决 链接: https://www.cnblogs.com/zhangdewang/p/8617743.html.
链接: https://blog.csdn.net/DRB321/article/details/93242793.
更多配置参数参考如下连接 链接: https://blog.csdn.net/qq_41453285/article/details/88600304.
更多 systemctl 相关命令请查看下方连接 链接: https://www.cnblogs.com/zwcry/p/9602756.html.
系统: Linux centos8 镜像image:centos8.0 mysql:8.0.20 jdk:jdk1.8.0_161 tomcat:apache-tomcat-8.5.55
在容器内部想要使用systemctl 在创建启动容器时需要添加–privileged /usr/sbin/init 才可以使用 如下
docker run -itd --name ssm2 -p 4000:8080 -p 3306:3306 --privileged yelingyun/centos_ye:1.0.0 /usr/sbin/in如果想创建容器时使用其他脚本启动容器内服务,(我打开 /usr/sbin/init文件看了,一脸懵逼)显然两者不可兼得,下面简单讲一下不考虑使用systemctl命令的情况下,启动容器时顺带利用脚本启动容器
添加如下信息
#!/bin/bash /usr/local/apache-tomcat-8.5.55/bin/start.sh start /usr/sbin/init /bin/bash将当前容器制作为镜像,在利用镜像重启创建启动容器
docker commit 容器名 镜像名 如 docker commit ssms tomcat_test现在就可以利用新镜像创建容器的时候执行脚本启动tomcat
docker run -itd --name ssm3 -p 4000:8080 -p 3306:3306 --privileged tomcat_test /usr/local/apache-tomcat-8.5.55/bin/tomcatshell.sh如下,tomcat 服务启动成功,可以正常访问项目