大家好,我是烤鸭:
分享一下linux上部署docker的javaweb项目
1.环境
linux centos 7.2
64-bit 系统
kernel 3.10+
查看版本号 :
uname -r
大于3.10即可
2.安装docker
这里是官网安装教程
https://docs.docker.com/engine/installation/linux/docker-ce/centos/
说一下docker ce 和ee版的区别,ce是社区版免费的,ee是企业版,收费的。
简述几个安装命令,一路打下来就好。
2.1.移除之前定的安装:
yum remove docker \
docker-common \
docker-selinux \
docker-engine
2.2.设置仓库:
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
2.3.安装docker-ce
yum install docker-ce
systemctl start docker
2.5.运行hello-world镜像
docker run hello-world
成功如下图:
3.docker安装成功了,我选择的是官网拉取一个centos镜像
这里是官网的商店,可以找你想要的镜像。
https://store.docker.com/search?offering=community&type=edition
https://store.docker.com/images/centos
其实要的就是这个命令:
docker pull centos
拉取到了centos的镜像,我们用镜像启动容器。
4.镜像创建与容器启动
4.1查看镜像
docker images
docker run -i -t -v /download/:/usr/my/docker/download/ 3fa822599e10 /bin/bash
其中,相关参数包括: -i:表示以“交互模式”运行容器 -t:表示容器启动后会进入其命令行 -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
说一下downlaod和/usr/my/docker/download/
前者表示你把东西放在你服务器的download/文件夹下,在进入容器的时候,文件会相应地映射到/usr/my/docker/download/这个文件夹下。
/bin/bash表示启动后进入命令行,crtl+d或者exit退出。
如果这一步出现:Permission denied,参考这篇大神的文章:
http://blog.csdn.net/rznice/article/details/52170085
查看容器:
docker ps -a
4.3重新进入容器
首先启动容器:
docker start c806a68d2409
进入容器:
docker attach c806a68d2409
5.java环境安装
5.1将jdk的tar包和tomcat的tar包放到/download/文件下
如图所示:
5.2 这时候进入容器指定目录,我的是/usr/mmy/就能找找到这两个jar包,解压和配置环境变量。
5.3解压jdk和tomcat的tar包
cd /usr/my
mkdir jdk
mkdir tomcat
cd /usr/my/docker/download/
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/my/jdk
tar -zxvf apache-tomcat-9.0.0.M26.tar.gz -C /usr/my/tomcatmv apache-tomcat-9.0.0.M26 tomcat_test
5.4配置环境变量
这里我没有配置jdk的环境变量,因为不需要,当然也可以配置。
vi /etc/profile
G-到最后一行,o-新换行开始。最后一行加上:
#set java environment
export JAVA_HOME=/usr/my/jdk/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
保存后:
source /etc/profile
查看java版本
java -version
5.5配置tomcat
进入tomcat的bin目录下
cd /usr/my/tomcat/tomcat_test/bin
vi setclasspath.sh
最后添加:
export JAVA_HOME=/usr/my/jdk/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
保存后,启动tomcat。
./startup.sh
之所以前面说jdk的环境变量可以不配置,因为容器启动重新加载单独的配置文件。
6.1设置环境变量
vi ~/.bashrc
文件最后加上:
#set java environment
export JAVA_HOME=/usr/my/jdk/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
生效:
source ~/.bashrc
6.2编写运行脚本
vi /root/run.sh
脚本内容如下:
#!/bin/bash
source ~/.bashrc
sh /usr/usr/tomcat/tomcat_test/bin/catalina.sh run
千万不要忘记给脚本加权限:
chmod u+x /root/run.sh
这时候容器内部的准备工作就完了。退出容器。
7.创建web镜像
查找容器:
docker ps -a
创建镜像:
docker commit c806a68d2409 test_web:1.0
docker run -d -p 8999:8080 --name test test_web:1.0 /root/run.sh
查看镜像:
docker ps
如果能查到,说明启动成功了。
最后附上一张访问成功的图(8999端口):
http://blog.csdn.net/evankaka/article/details/50722788
8.问题:
另外说一下出现的问题:
8.1.如果出现类似:bash:vi:或者cd或者ps等常用命令
command not find
检查一下/etc/profile下,是不是新配的环境变量有问题。
vi命令不好用的话:
在命令行中输入:export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin 这样可以保证命令行命令暂时可以使用。
8.2.如果出现容器启动没反应,docker ps 找不到内容,但是启动没报错。
估计是脚本启动失败,原因不太清楚。
可以试着把/etc/profile文件还原,再尝试下。
毕竟启动容器不需要改/etc/profile这个文件,有单独的文件~/.bashrc配置环境变量就可以了。