对于想了解Docker从安装到发布jdk+tomcat发布war包的读者,本文将是一篇不可错过的文章,我们将详细介绍docker发布java项目,并且为您提供关于2019-09-20docker安装T
对于想了解Docker 从安装到发布 jdk+tomcat 发布 war 包的读者,本文将是一篇不可错过的文章,我们将详细介绍docker发布java项目,并且为您提供关于2019-09-20 docker 安装Tomcat ,部署war包、Centos 7 安装 docker ,docker 安装 mysql 、 tomcat、CentOS 下安装 Jenkins(Docker/war/tomcat/java -jar)、CentOS 环境中使用 Dockerfile 创建 Tomcat+JDK 镜像的有价值信息。
本文目录一览:- Docker 从安装到发布 jdk+tomcat 发布 war 包(docker发布java项目)
- 2019-09-20 docker 安装Tomcat ,部署war包
- Centos 7 安装 docker ,docker 安装 mysql 、 tomcat
- CentOS 下安装 Jenkins(Docker/war/tomcat/java -jar)
- CentOS 环境中使用 Dockerfile 创建 Tomcat+JDK 镜像
Docker 从安装到发布 jdk+tomcat 发布 war 包(docker发布java项目)
1,docker 安装之前写过就不在赘述了,我的环境 64 位 centos7.1 内核 3.1,直接写命令
#更新 yum
sudo yum update
#添加 yum 仓库
$ sudo tee /etc/yum.repos.d/docker.repo <<-''EOF''
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
#安装 docker
sudo yum install docker-engine
#启动 docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker
#验证是否成功
sudo docker info
sudo docker version
sudo docker run hello-world
以上安装完毕,官网,docloud,阿里云也有安装脚本。
安装结束如果不配置代理,我用 docloud 的加速器,官网上把加速器的脚本复制过来执行一下即可。
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://9c0b10da.m.daocloud.io
说一下卸载:
yum list installed | grep docker
#会列出已安装的 docker 删除即可
sudo yum -y remove docker-engine.x86_64
#删除镜像 / 容器等
rm -rf /var/lib/docker
以上 docker 的准备环境完毕。
首先下载镜像如我需要 centos
sudo docker search centos
这时我们会看到 centos 的镜像,至于有关镜像的理解个人更愿意把它理解为虚拟光驱的镜像使用。
#下载镜像默认是最新的 centos 镜像
sudo docker pull centos
#查看镜像
sudo docker images
好了现在我们准备 jdk 和 tomcat,把它放在当前目录下(本人没用 Dockerfile 方式因为不是很熟练,所以用的一下方法,个人认为 Dockerfile 挺好)
sudo docker run -i -t -v /home/docker/software:/mnt/software --privileged=true d7b5decce082
#docker run <相关参数> < 镜像 ID> < 初始命令 >, 意思运行 d7b5decce082 即刚才下载的 centos 把本地的 tomcat 和 jdk 目录挂载到 docker 镜像中。
安装 jdk
进入镜像后就是 linux 系统,进入挂载目录 mnt/software 下。
配置环境变量:
1,vi ~/.bashrc
export JAVA_HOME=/opt/jdk
export PATH=$PATH:$JAVA_HOME
2, 在 etc/profile 文件末尾加入:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
最后使用 source 命令,让环境变量生效:
source ~/.bashrc
source /etc/profile
以上配置环境变量细节不写了如果不同之处修改 jdk 版本和你的 jdk 路径即可。
安装 tomcat
还是和平常 linux 一样我把项目的 tomcat 直接 cp 下来放到 webapps 下了.
在一个目录下些一个 tomcat 启动脚本内容如下
#!/bin/bash
source ~/.bashrc
sh /opt/tomcat/bin/catalina.sh run
注意:这里必须先加载环境,然后使用 Tomcat 的运行脚本来运行 Tomcat
最后,为运行脚本添加执行权限:
chmod u+x run.sh
提交镜像
首先退出你刚才配置好的 docker 镜像
exit
然后使用以下命令可以看到刚才退出的 docker 镜像
docker ps –a
再使用以下命令,根据某个” 容器 ID” 来创建一个新的” 镜像”:
docker commit 57c312bbaad1 javaweb:0.1
该容器 ID 是”57c312bbaad1”,所创建的镜像名是”javaweb”
注意:”57c312bbaad1” 这个 ID 是使用 docker ps 命令来查看的
提交了新的镜像你可以把这个镜像储存 tar 包
docker save –o ~/javaweb.tar javaweb
docker save –o 保存的目录 镜像名
补充 docker 载入镜像两种方法
sudo docker load --input 文件
sudo docker load < 文件名
启动容器
先用 docker images 看看当前所有的镜像
启动最新创建的镜像
docker run -d -p 80:80 --name javaweb javaweb:0.1 /opt/run.sh
-d:表示以” 守护模式” 执行 /root/run.sh 脚本,此时 Tomcat 控制台不会出现在输出终端上。
-p:表示宿主机与容器的端口映射,此时将容器内部的 80 端口映射为宿主机的 80 端口,这样就向外界暴露了 80 端口,可通过 Docker 网桥来访问容器内部的 80 端口了
--name:表示容器名称,用一个有意义的名称命名即可
以上全部完事,以上包括自己整理和网上摘取。
2019-09-20 docker 安装Tomcat ,部署war包
一、下载tomcat镜像
执行下面的命令,默认会下载最新版本的tomcat镜像
docker pull tomcat
二、启动tomcat
docker run -p 8081:8080 --name mytomcat
-p : 前边的8081是本机的端口,冒号后面的8080是docker容器的端口,tomcat默认是8080
–name : 是给容器起一个别名,方便使用,不然docker会默认给容器一个随机字符串的名称
执行完命令后,在命令行可以看到tomcat启动的日志。
- 在浏览器输入:http://192.168.99.100:8081/,即可看到熟悉的tomcat首页界面
启动的时候,映射本地文件,但这个好像没什么卵用,
docker run --name tomcat -p 8081:8080 -v /d/test/ljtao/test1:/urs/local/tomcat/wepapps -d tomcat
三、部署项目到tomcat (这个是关键)
把项目打包成一个war包文件,这里暂时假设名称为demo.war,然后在war包所在的目录,执行以下命令:
docker cp demo.war mytomcat:/usr/local/tomcat/webapps
也可以这样部署,当时前面的路径不能出现文件夹的名字包含空格的,否则会报错
docker cp d:\JavaTools\projectwar\test1.war mytomcat:/usr/local/tomcat/webapps
docker cp d:\JavaTools\projectwar\test1.war 646455ec77db:/usr/local/tomcat/webapps
646455ec77db 为tomcat的容器ID
war包会自动解压,然后执行下面命令重启容器
docker restart mytomcat
四、项目打包成war的处理
1、没有导出classes的文件出来,
解决:先用maven clean掉,再package
2、直到这个项目的目录下有这些文件
Centos 7 安装 docker ,docker 安装 mysql 、 tomcat
一、安装docker
不要看其他的博客文档。就按照菜鸟教程执行。
菜鸟教程地址: http://www.runoob.com/docker/centos-docker-install.html
装了几次启动不了。按照这个流程一遍OK
我的环境是Centos 7, 内核 3.10版本。安装docker CE,社区免费版
移除旧的版本:
$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
安装一些必要的系统工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存:
sudo yum makecache fast
安装 Docker-ce:
sudo yum -y install docker-ce
启动 Docker 后台服务
sudo systemctl start docker
测试运行 hello-world
[root@runoob ~]# docker run hello-world
二、设置docker开机自启动
# systemctl enable docker
# usermod -aG docker root(用户名)
重新登陆后直接查看,docker已经默认启动了。
三、docker 安装 MysqL 5.7版本。
MysqL 5.7安装后,启动MysqL容器
启动MysqL容器:
docker run -p 3306:3306 --name myMysqL -v $PWD/conf:/etc/MysqL/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/MysqL -e MysqL_ROOT_PASSWORD=root -d MysqL:5.7
-p 3306:3306 将容器的3306端口映射到主机的3306端口。
--name 容器名称。
-v -v $PWD/conf:/etc/MysqL/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/MysqL/my.cnf。
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v $PWD/data:/var/lib/MysqL :将主机当前目录下的data目录挂载到容器的 /var/lib/MysqL 。
-e MysqL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
四、docker 安装 tomcat
docker pull tomcat:8.5 下载8.5版本的tomcat
docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat
启动tomcat容器。
-p 8080:8080:将容器的8080端口映射到主机的8080端口
-v $PWD/test:/usr/local/tomcat/webapps/test:将主机中当前目录下的test挂载到容器的/test
CentOS 下安装 Jenkins(Docker/war/tomcat/java -jar)
参考官方提供的安装教程:https://jenkins.io/doc/book/installing/,可以发现官方推荐使用 Docker 进行安装。虽然用 Docker 有很多好处,但也有缺点。
下面是各种安装方法:
无论怎么的安装方法,jenkins 在启动时,都会在运行用户的目录下生成.jenkins 文件夹,此文件夹用于存放配置和项目文件,因此,想要备份和迁移 jenkins 的可以在此文件夹入手。
一、Docker
Docker 运行简单,无需关心 Java 环境,但弊端是不能使用 Docker 版的 Jenkins 来打包 Docker,但可以使用子节点的形式来实现。还有就是 Docker 启东市参数的配置其实是比较少的,没那么灵活。其实研究到最后你会发现它的运行也就是 java -var jenkins.war 的形式,那么可以通过改写容器里面的进程启动参数来增加可配置参数的灵活性。
# 下载镜像
# 最新版
docker pull jenkinsci/blueocean
# 指定版
# docker pull jenkinsci/blueocean:1.3.6
# 运行
docker run \
-u root \
--rm \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
说明:
1 (可选) jenkinsci/blueocean
关闭时自动删除 Docker 容器(下图中的实例化)。如果您需要退出 Jenkins,这可以保持整洁。2 (可选) jenkinsci/blueocean
在后台运行容器(即 “分离” 模式)并输出容器 ID。如果未指定此选项,则会在终端窗口中输出正在运行的此容器的 Docker 日志。3 映射(即 “发布”) jenkinsci/blueocean
容器的端口 8080 到主机上的端口 8080。第一个数字表示主机上的端口,而最后一个表示容器的端口。因此,如果您-p 49000:8080
为此选项指定,则将通过端口 49000 访问主机上的 Jenkins。4 (可选)将 jenkinsci/blueocean
容器的端口 50000 映射到主机上的端口 50000。只有在其他计算机上设置了一个或多个基于 JNLP 的 Jenkins 代理时才需要这样做,而这些代理又与jenkinsci/blueocean
容器交互(充当 “主” Jenkins 服务器,或简称为 “Jenkins master”)。基于 JNLP 的 Jenkins 代理默认通过 TCP 端口 50000 与 Jenkins 主机通信。您可以通过 “配置全局安全性” 页面更改 Jenkins 主服务器上的此端口号。如果您要将 JNSLP 代理的 Jenkins 主服务器 TCP 端口 值更改为 51000(例如),那么您需要重新运行 Jenkins(通过此docker run …
命令)并指定此 “发布” 选项,例如-p 52000:51000
,其中最后一个值与 Jenkins 主服务器上的此更改值匹配,第一个值是 Jenkins 主服务器上的端口号,基于 JNLP 的 Jenkins 代理通过该端口号与 Jenkins 主服务器进行通信 - 即 52000。5 (可选但强烈建议)使用名称 /var/jenkins_home
将容器中的目录映射到 Docker 卷jenkins-data
。如果此卷不存在,则此docker run
命令将自动为您创建卷。如果您希望每次重新启动 Jenkins 时都保持 Jenkins 状态(通过此docker run …
命令),则需要此选项 。如果未指定此选项,则 Jenkins 将在每次重新启动后有效地重置为新实例。
注意: 所述的jenkins-data
体积也可以独立地使用所创建的docker volume create
:命令docker volume create jenkins-data
代替映射/var/jenkins_home
在 Docker 卷的目录中,您还可以将此目录映射到计算机本地文件系统上的目录。例如,指定该选项-v $HOME/jenkins:/var/jenkins_home
会将容器的/var/jenkins_home
目录映射 到 本地计算机上目录中的jenkins
子目录,该子目录$HOME
通常为/Users/<your-username>/jenkins
或/home/<your-username>/jenkins
。6 (可选) /var/run/docker.sock
表示 Docker 守护程序通过其侦听的基于 Unix 的套接字。此映射允许jenkinsci/blueocean
容器与 Docker 守护程序通信,如果jenkinsci/blueocean
容器需要实例化其他 Docker 容器,则需要该守护程序。如果运行语法包含agent
带docker
参数的部分的声明性管道,则此选项是必需的 - 即agent { docker { … } }
。在 Pipeline Syntax 页面上阅读更多相关信息 。7 jenkinsci/blueocean Docker镜像
。如果尚未下载此镜像,则此docker run
命令将自动为您下载镜像。此外,如果自上次运行此命令后发布了对此映像的任何更新,则再次运行此命令将自动为您下载这些已发布的映像更新。
注意:也可以使用以下docker pull
命令单独下载(或更新)此 Docker 镜像 :docker pull jenkinsci/blueocean
文件主目录:
上面安装指定了 - v jenkins-data:/var/jenkins_home,那么此时在 Docker 容器目录已经变了,不再是用户目录下的.jenkins 文件夹,变成 /var/jenkins_home 文件夹;当这个选项没有填写时才是默认的.jenkins 文件夹。如果想要变成宿主机也有这个文件夹映射,需要这样写 - v /var/jenkins_home:/var/jenkins_home。
查看日志:
此时的日志没有在容器里没有指定的位置,所以只能通过 docker logs <name> 进行日志的查看。
二、Tomcat 部署 war 包
这个方法最简单,直接交给 tomcat 容器,并且 jvm 参数这些也同样由 tomcat 进行配置;那么此时可以配置的选项已经有所折扣,主目录默认放在用户目录下的.jenkins 文件夹;而进入系统设置后会提示 “代理服务器设置错误” 等信息,且无法修复。
# 在此地址下载war包http://mirrors.jenkins.io/war-stable/
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war -O jenkins.war
# 移动到tomcat目录
mv jenkins.war $TOMAT_HOME/webapps/
# 最后访问地址
http://$TOMCAT_IP:$TOMCAT_PORT/jenkins
主目录:
可以修改,不过需要结合 Tomcat 的启动脚本,把这些参数加上去:
日志:
变成这个:/data/service/tomcat/logs/catalina.out
官方参考:
https://wiki.jenkins.io/display/JENKINS/Tomcat
三、yum 源安装
这个应该是网上最多人用的方式,其运行原理也就是 java -jar jenkins.war,同时你只能通过这种方式安装最新版本,某些指定版本不一定可以安装的到,当然这都是可以解决的,比如在这里 https://pkg.jenkins.io/redhat-stable/ 下载特定的 RPM 包进行安装即可,同样 RPM 包没有那么多指定版本可以选择,但可以下载 war 包替换即可实现指定版本的安装;并且需要 JDK 的路径必须为如下所示:
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java/usr/bin/java
安装好后的文件如下:
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins
安装脚本:
# 安装依赖
yum install -y epel-release
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# 安装jenkins
yum install jenkins
主目录:
在配置文件 /etc/sysconfig/jenkins 下进行配置,默认为:/var/lib/jenkins,同时这个文件也是可以配置 jenkins 的启动参数等。
日志:
在目录 /var/log/jenkins 下
官方参考:
https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions
四、war 包的 java -jar 运行
目前这种方式应该是最好的,采用 java -jar 的运行,参数可以随意指定,此运行时基于 jetty 的容器。
# 下载war包
# 在此地址下载war包http://mirrors.jenkins.io/war-stable/
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war -O jenkins.war
使用 nohup 进行运行,此方法可以指定控制台的日志输出位置,其实上面几种方式都是这样的方式输出日志的:
nohup java -jar jenkins.war > /tmp/jenkins.log 2>&1
命令参数如下:
命令行参数
Jenkins 通常使用端口 8080 启动。但是,如果启动了其他 Web 服务,您可能会发现此端口已被占用。您可以使用希望 Jenkins 运行的端口
--httpPort=
$HTTP_PORT
在哪里指定其他端口$HTTP_PORT
。其他命令行参数包括:
命令行参数
描述
-help 显示所有可用选项及其用法 --httpPort=$HTTP_PORT
使用标准 http 协议在端口 $HTTP_PORT 上运行 Jenkins 侦听器。默认端口为 8080. 要禁用(因为您使用的是 https),请使用端口
-1
。此选项不会影响在 Jenkins 逻辑(UI,JNLP 文件等)中生成的根 URL; 它由全局配置中指定的 Jenkins URL 定义。--httpListenAddress=$HTTP_HOST
将 Jenkins 绑定到 $HTTP_HOST 表示的 IP 地址。默认值为 0.0.0.0 - 即侦听所有可用接口。
例如,要仅侦听来自 localhost 的请求,您可以使用: - httpListenAddress=127.0.0.1--httpsPort=$HTTP_PORT
在端口 $HTTP_PORT 上使用 HTTPS 协议。此选项不会影响在 Jenkins 逻辑(UI,JNLP 文件等)中生成的根 URL; 它由全局配置中指定的 Jenkins URL 定义。
--httpsListenAddress=$HTTPS_HOST
绑定 Jenkins 以侦听 $HTTPS_HOST 表示的 IP 地址上的 HTTPS 请求。
--http2Port=$HTTP_PORT 在端口 $HTTP_PORT 上使用 HTTP/2 协议。此选项不会影响在 Jenkins 逻辑(UI,JNLP 文件等)中生成的根 URL; 它由全局配置中指定的 Jenkins URL 定义。 --http2ListenAddress=$HTTPS_HOST 绑定 Jenkins 以侦听 $HTTPS_HOST 表示的 IP 地址上的 HTTP/2 请求。 --prefix=$PREFIX
运行 Jenkins 以在 URL 末尾包含 $PREFIX。
例如,要使 Jenkins 可以访问,请设置 --prefix=/jenkins
http
://
myServer
:8080/jenkins
--ajp13Port=$AJP_PORT
使用标准 AJP13 协议在端口 $AJP_PORT 上运行 Jenkins 监听器。默认值为端口 8009. 要禁用(因为您使用的是 https),请使用端口
-1
。--ajp13ListenAddress=$AJP_HOST
将 Jenkins 绑定到 $AJP_HOST 表示的 IP 地址。默认值为 0.0.0.0 - 即侦听所有可用接口。
--argumentsRealm.passwd.$ADMIN_USER
设置用户 $ADMIN_USER 的密码。如果启用了 Jenkins 安全性,则必须以 $ADMIN_USER 身份登录才能配置 Jenkins 或 Jenkins 项目。注意:您还必须指定此用户具有管理员角色。(见下面的下一个论点)。
--argumentsRealm.roles.$ADMIN_USER=admin
设置 $ADMIN_USER 是管理用户,如果启用了 Jenkins 的安全性,则可以配置 Jenkins。有关更多信息,请参阅保护 Jenkins。
--sessionTimeout=$SESSION_TIMEOUT 将 http 会话超时值设置为 $SESSION_TIMEOUT 分钟。默认为 webapp 指定的内容,然后是 60 分钟
--useJmx 启用 Jetty JMX(参见文档) -Xdebug -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n
设置调试开启,您可以访问 $DEBUG_PORT 上的调试。
-logfile=$LOG_PATH/winstone_`date +“%Y%m-%d_%H-%M”`.log
记录到所需的文件
-XX:PermSize=512M -XX:MaxPermSize=2048M -Xmn128M -Xms1024M -Xmx2048M
参考 Oracle Java 的这些选项
官方参考:
https://wiki.jenkins.io/display/JENKINS/Starting+and+Accessing+Jenkins
五、反向代理设置
其实无需在 Jenkins 的 jetty 容器配置 SSL,只需在 Nginx 配置即可。
# 普通方向代理
server {
listen 80;
server_name www.jenkins.com;
client_max_body_size 200m;
location / {
sendfile off;
proxy_pass http://127.0.0.1:8080;
proxy_redirect default;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_max_temp_file_size 0;
#this is the maximum upload size
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffering off;
proxy_request_buffering off; # Required for HTTP CLI commands in Jenkins > 2.54
proxy_set_header Connection ""; # Clear for keepalive
}
}
SSL反向代理
server {
listen 443;
server_name www.jenkins.com;
ssl on;
root html;
index index.html index.htm;
ssl_certificate /data/service/nginx_vhost/cert/215082065120461.pem;
ssl_certificate_key /data/service/nginx_vhost/cert/215082065120461.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
sendfile off;
proxy_pass http://127.0.0.1:8080;
proxy_redirect default;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_max_temp_file_size 0;
#this is the maximum upload size
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffering off;
proxy_request_buffering off; # Required for HTTP CLI commands in Jenkins > 2.54
proxy_set_header Connection ""; # Clear for keepalive
}
}
官方参考:
https://wiki.jenkins.io/display/JENKINS/Jenkins+behind+an+NGinX+reverse+proxy
六、总结
1、war 包使用 java -jar 运行其实是个趋势,Docker 虽然快,但也有弊端。
2、yum 其实配置最好,什么项都非常清晰,只是目录规划不能自定义,需要后期维护。
3、war 包直接运行最灵活,要什么参数都可以自行配置。
4、tomcat 部署最弱,依托于 tomcat 容器后续配置可能要兼顾考虑。
5、每个版本的安装各有千秋,适合自己的才是最好的。我个人觉得 yum 安装还是不错的,至少配置是标准的。
6、对于运行的用户来说,root 无疑是最爽的,但存在风险,容易 rm -rf /,但想一想,对于这种情况强制分配权限就可以解决,但可能会存在 BUG,如果确实要做,可以通过新建 jenkins 用户实现。
七、一键安装脚本
https://github.com/easonjim/centos-shell/tree/master/jenkins
参考:
https://www.blazemeter.com/blog/how-to-install-jenkins-on-the-apache-tomcat-server(tomcat)
https://www.vultr.com/docs/how-to-install-jenkins-on-centos-7(yum)
https://jenkins.io/doc/book/installing/ (官方教程)
https://blog.whsir.com/post-2505.html
https://ken.io/note/centos7-jenkins-install-tutorial
https://www.cnblogs.com/stulzq/p/9291237.html
CentOS 环境中使用 Dockerfile 创建 Tomcat+JDK 镜像
环境准备:
1. VMware 下安装 CentOS,安装 Docker 并从公共镜像仓库中下载 CentOS 的镜像到本地仓库
2. 从 tomcat 和 oracle 官网下载 jdk-8u171-linux-x64.rpm 和 apache-tomcat-7.0.77.tar.gz
3. 上传到 CentOS 虚拟机的工作目录:如 /root/software/
4. 上传工程到工作目录,示例中创建的是一个 hello.html
创建 Dockerfile
创建文件 /root/software/Dockerfile, 内容如下:
FROM centos:7.2.1511
MAINTAINER sjg
WORKDIR /home
#上传安装包
ADD jdk-8u171-linux-x64.rpm /home/
#安装JDK
RUN rpm -ivh /home/jdk-8u171-linux-x64.rpm && rm -rf /home/jdk-8u171-linux-x64.rpm
#设置环境变量
ENV JAVA_HOME /usr/java/jdk1.8.0_171-amd64
ENV PATH $PATH:$JAVA_HOME/bin
#安装tomcat
RUN mkdir Tomcat
ADD apache-tomcat-7.0.77.tar.gz /home/
RUN tar zxf /home/apache-tomcat-7.0.77.tar.gz -C /home/Tomcat && rm -rf /home/apache-tomcat-7.0.77.tar.gz
#部署项目
ADD hello.html /home/Tomcat/apache-tomcat-7.0.77/webapps/ROOT/
EXPOSE 8080
#启动容器
ENTRYPOINT /home/Tomcat/apache-tomcat-7.0.77/bin/startup.sh && tail -f /home/Tomcat/apache-tomcat-7.0.77/logs/catalina.out
build Tomcat 镜像
执行:cd /root/software
执行:docker build -t tomcat-sjg:1.0
运行 Tomcat 容器
docker run -d -p 58080:8080 --name mytomcat tomcat-sjg:1.0
查看 hello world 页面
在浏览器中输入:http://[虚拟机地址]:58080/hello.html
其他常用命令:
Docker 的公共仓库中其实已经提供了 tomcat 镜像,但是 java 环境并不是 oracle JDK。
关于Docker 从安装到发布 jdk+tomcat 发布 war 包和docker发布java项目的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于2019-09-20 docker 安装Tomcat ,部署war包、Centos 7 安装 docker ,docker 安装 mysql 、 tomcat、CentOS 下安装 Jenkins(Docker/war/tomcat/java -jar)、CentOS 环境中使用 Dockerfile 创建 Tomcat+JDK 镜像的相关知识,请在本站寻找。
本文标签: