• Docker学习笔记五:docker简单实践(Docker部署Java应用)


    学习完https://how2j.cn/k/docker/docker-docker/2005.html?p=130725的docker教程,以下是完成练习题的操作记录~
     
    练习要求:
    在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.rpm
     
    2.安装
    yum install mysql mysql-server mysql-devel -y
     
    3.启动mysql
    systemctl start mysql.service
    netstat -anp|grep 3306
    以上说明安装并启动成功
     
    4.设置密码
    通过Yum安装的mysql的管理员账户是没有密码的,这里通过命令设置其密码为 admin ,尽量使用这个密码哦,后续部署j2ee应用的时候会用到这个密码哦。
    mysqladmin -u root password admin
     
    5.登录
    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/tomcat8
     
    2.启动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.service
     
    2)创建数据库
    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.service
     
    2.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/  (这是我本地虚拟机地址),功能正常,说明镜像正常。
     
     
    八、提交镜像
     1.登录
    如果没有账号的话需要先注册账号,在 https://hub.docker.com 可以免费注册一个 Docker 账号。
    docker login
     
    2.推送镜像到仓库
    镜像命名要符合 how2j/tmall 这样的风格,即斜杠前面必须是你的账号名。 如果镜像不是这个名字,可以通过 tag进行标记。
    docker tag tmall-test:v1 130349805/tmall-test:v1
    docker push 130349805/tmall-test:v1

     耗时多久,取决于镜像大小~

     
  • 相关阅读:
    shell变量解析
    visual studio code(vscode)使用
    linux虚拟机安装
    算法总结系列之八:复读机的故事散列表及其在.NET中的应用浅析(上集)
    对改善Dictionary时间性能的思考及一个线程安全的Dictionary实现
    算法总结系列之八:复读机的故事 散列表.NET应用的研究(下集)
    使用WiX打包你的应用程序之二向WiX脚本传递信息(属性)的几种方式
    当心Dictionary带来的一种隐式内存泄漏
    从DWG到XAML (II) DWFx格式解析及其和XPS的关系
    从DWG到XAML (I) 浅谈DWG历史,现状及方向
  • 原文地址:https://www.cnblogs.com/daydayup-lin/p/12251303.html
Copyright © 2020-2023  润新知