练习要求: 在CentOS Linux release 7.7.1908 (Core)中,先拉一个Centos镜像,然后在光秃秃的centos镜像基础上把项目环境搭建好,然后再提交到自己的docker仓库里。 操作环境: 虚拟机中安装好的CentOS Linux release 7.7.1908 (Core) 一、安装并启动Docker 1.更新 yum
yum -y update
2. 安装 Docker:
yum install docker -y
3.启动:
systemctl start docker.service
4.拉去Centos镜像
docker pull centos:7.6.1810
5.启动容器:
docker run --privileged -it -d --name tmall-test f1cb7c7d58b7 /usr/sbin/init
6.进入容器:
docker exec -it 容器ID /bin/bash二、安装java (在已启动的容器中操作)
yum -y install java-1.8.0-openjdk.x86_64检查java安装是否成功:
java -version三、安装mysql (在已启动的容器中操作) 1.下载 yum上mysql的资源有问题,所以不能仅仅之用yum。在使用yum之前还需要用其他命令获取mysql社区版
cd /tmp wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm2.安装
yum install mysql mysql-server mysql-devel -y3.启动mysql
systemctl start mysql.service netstat -anp|grep 3306以上说明安装并启动成功 4.设置密码 通过Yum安装的mysql的管理员账户是没有密码的,这里通过命令设置其密码为 admin ,尽量使用这个密码哦,后续部署j2ee应用的时候会用到这个密码哦。
mysqladmin -u root password admin5.登录
mysql -uroot -p输入密码admin 登录成功后输入:
show databases;看到这3个数据库,就表示用root账号登陆成功了 四、安装tomcat (在已启动的容器中操作) 1.安装 yum上没有tomcat的源,所以使用如下方式下载解压
cd /tmp wget wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.tar.gz tar -zxvf apache-tomcat-8.5.50.tar.gz mv apache-tomcat-8.5.50 /usr/local/tomcat82.启动Tomcat
/usr/local/tomcat8/bin/startup.sh查看端口:
netstat -anp|grep 8080查看启动日志,ctrl+c可退出
tail -10f /usr/local/tomcat8/logs/catalina.out五、部署一个web应用 (在已启动的容器中部署) 1.上传web应用 首先在宿主机新建目录data:
mkdir data然后利用xftp将本地文件上传至宿主机,如下图: 左边是本地,右边是宿主机,将需要上传的文件拖拽至右边即可上传 最后将文件从宿主机中拷贝至docker: 语法:docker cp 本地文件路径 容器ID:容器路径
docker cp /root/data/tmall 86422442c39d:/home/wwwroot/ftptest docker cp /root/data/tmall.sql 86422442c39d:/home/wwwroot/ftptest注意:以上拷贝需要在容器外操作 2.数据库准备 1)大小写敏感 Linux MySQL默认是大小写敏感的,但是模仿天猫在设计的时候是在windows上开发的,而windows上的Mysql默认是非大小写敏感的,所以JDBC代码有的表名是大写,有的是小写的,一旦运行起来就会因为大小写不一致导致无法识别表名。 为了解决这个矛盾,就需要把MySQL的大小写敏感修改为非敏感 修改 mysql配置文件:
vi /etc/my.cnf修改:
lower_case_table_names=1修改保存后重启mysql:
systemctl restart mysqld.service2)创建数据库
mysql -uroot -padmin
CREATE DATABASE tmall DEFAULT CHARACTER SET utf8; show databases; quit;3)导入数据 执行命令:
mysql -u root -padmin --default-character-set=utf8 tmall < /home/wwwroot/ftptest/tmall.sql注意:执行该命令需要退出mysql控制台 重新登录mysql,验证导入是否成功:
mysql -uroot -padmin
use tmall; show tables; select count(*) from product;3.tomcat配置 1)修改server.xml
vi /usr/local/tomcat8/conf/server.xml然后在<host下面增加一行:
<Context path="/tmall" docBase="/home/wwwroot/ftptest/tmall/web" debug="0" reloadable="false" />注: /home/wwwroot/ftptest/tmall/web 就是 上传web应用 后的位置 2)重启tomcat
/usr/local/tomcat8/bin/shutdown.sh /usr/local/tomcat8/bin/startup.sh查看日志:
tail -300f /usr/local/tomcat8/logs/catalina.out六、设置自启动 所谓的自启动,就是在 Linux 重启之后,会自动启动一些服务和程序。这里也就是容器启动之后自动启动服务和程序。 在重启之后,mysql 不会自动启动,tomcat也不会自动启动,这样在重启之后,服务就不可以使用了。 需要自启动的服务有 mysql 需要自启动的脚本有 tomcat 1.mysql自启动
systemctl enable mysqld.service2.tomcat自启动 有个文件叫做 rc.local, 把脚本放进去就可以了。 不过这个脚本在 centos7里被降级了,不能被执行,所以要执行如下语句使得其可以被执行先
chmod +x /etc/rc.d/rc.local然后修改 /etc/rc.d/rc.local, 放入 tomcat脚本即可
vi /etc/rc.d/rc.local添加tomcat脚本:
/usr/local/tomcat8/bin/startup.sh七、生成新镜像 将上述步骤操作之后的容器commit成一个新镜像, 语法:docker commit 容器ID 镜像名称
docker commit 266c8dc4b799 tmall-test:v1并以新镜像运行容器:
docker run -dit --privileged -p80:80 -p8080:8080 --name tmall-test-final 1a2f17365656 /usr/sbin/init访问项目地址: http://192.168.197.226:8080/tmall/ (这是我本地虚拟机地址),功能正常,说明镜像正常。 标签:Java,tomcat,tmall,部署,usr,mysql,Docker,local,docker From: https://www.cnblogs.com/franson-2016/p/17558289.html