`
hanqunfeng
  • 浏览: 1541817 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

docker学习笔记之五:进阶实战--mysql+tomcat

阅读更多

一、mysql

参考资料:https://hub.docker.com/_/mysql/

 

1.下载mysql镜像

sudo docker pull mysql

 

2.启动mysql容器

sudo docker run -d -p 3306:3306 --name dbmysql -e MYSQL_ROOT_PASSWORD=password -v /mysql/datadir:/var/lib/mysql -v /mysql/conf:/etc/mysql/conf.d  docker.io/mysql:latest
-e MYSQL_ROOT_PASSWORD=password :指定root密码
-v /mysql/datadir:/var/lib/mysql :指定数据库本地存储路径,如果系统没有关闭SELinux,会启动失败,原因是本地目录不允许挂载到容器,需要先执行chcon -Rt svirt_sandbox_file_t /mysql/datadir
-v /mysql/conf:/etc/mysql/conf.d :指定使用自定义的mysql配置文件启动数据库,比如在该路径下创建一个my-config.cnf

vi my-config.cnf
[mysqld]
port=3306
character-set-server=utf8
wait_timeout=288000  # 链接超时,默认为8小时,单位为秒
lower_case_table_names=1 # 不去分大小写

 

 

3.docker-compose方式:

转到root用户

mkdir -p /docker-compose-dir/mysql

cd /docker-compose-dir/mysql

vi docker-compose.yml

dbmysql:
  image: docker.io/mysql:latest
  ports:
    - 3306:3306
  environment:
    MYSQL_ROOT_PASSWORD: password
  volumes:
    - /mysql/datadir:/var/lib/mysql
    - /mysql/conf:/etc/mysql/conf.d:ro

 

 

 
[root@centos-linux-agent mysql]# docker-compose up -d
Creating mysql_dbmysql_1
[root@centos-linux-agent mysql]# docker ps -a
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES
087f4e32cd29        docker.io/mysql:latest   "docker-entrypoint.sh"   4 seconds ago       Up 3 seconds        0.0.0.0:3306->3306/tcp   mysql_dbmysql_1
 
 

4.数据库脚本初始化

有时候,需要先执行数据库初始化脚本才能运行项目容器,可以采用如下方式:
脚本路径:/mysql_sql/mysql.sql
sudo docker run -it --rm --link=mysql_dbmysql_1:db  -v /mysql_sql:/mysql_sql mysql:latest mysql -hdb -uroot -ppassword -Ddbname 
 
说明:如果脚本中包含建库语句,则可以去掉-D参数
进入容器后执行:
mysql> source /mysql_sql/mysql.sql;
mysql> exit
退出容器后,容器将自动删除。

 

 

二、tomcat

参考资料:https://hub.docker.com/_/tomcat/

 

 

下载镜像:

sudo docker pull tomcat

目前最新版为8.0.X,可以通过上面的官方地址,找到需要的jre+tomcat的tag版本

 

启动容器:

sudo docker run -d -p 8080:8080 -v /usr/local/tomcat  tomcat:latest

 

查看容器中的tomcat目录被挂载到本机的路径:

sudo docker ps 

 

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef993d0f48c1 tomcat:latest "catalina.sh run"22 minutes ago Up9 minutes 0.0.0.0:8080->8080/tcp goofy_blackwell

 

 

 

sudo docker inspect -f "{{.Mounts}}" ef9
[{bbc41e0bbc97ae32839e876f291eb60173b6b1fc2867dd11a5381f85a85b8a59 /var/lib/docker/volumes/bbc41e0bbc97ae32839e876f291eb60173b6b1fc2867dd11a5381f85a85b8a59/_data /usr/local/tomcat local true }]
 
可以看到:
/var/lib/docker/volumes/bbc41e0bbc97ae32839e876f291eb60173b6b1fc2867dd11a5381f85a85b8a59/_data
然后可以修改conf下的配置文件,将war包拷贝到webapps下,等等,修改后要重启容器:sudo docker restart ef9
 
也可以直接映射宿主机上的war包路径:
sudo docker run -d -p 8080:8080 -v /tomcat/webapps:/usr/local/tomcat/webapps  tomcat:latest
这样,只需要将war包拷贝到宿主机的/tomcat/webapps下即可。
 
这样做和在本机使用tomcat并没有实际的区别,它的优势就是宿主机不需要安装jdk和tomcat。
 
docker-compose:
可以使用docker-compose一次启动多个tomcat容器,并建立起他们之间的关联关系。

mkdir -p /docker-compose-dir/tomcat

cd /docker-compose-dir/tomcat

vi docker-compose.yml

version: '2'
services:
   db:
     image: docker.io/mysql:latest
     volumes:
       - /mysql/datadir_tomcat:/var/lib/mysql
       - /mysql/conf:/etc/mysql/conf.d:ro
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: password
       
   tomcat01:
     depends_on:
       - db
     image: docker.io/tomcat:latest
     volumes:
       - /tomcat01/webapps:/usr/local/tomcat/webapps
     links:
       - db:db
     ports:
       - "8081:8080"
     restart: always

   tomcat02:
     depends_on:
       - db
     image: docker.io/tomcat:latest
     volumes:
       - /tomcat02/webapps:/usr/local/tomcat/webapps
     links:
       - db:db
       - tomcat01:tomcat01
     ports:
       - "8082:8080"
     restart: always

 

 
docker-compose up -d
 
上面这种方式,随便进入任何一个容器,执行ping命令,都可以互相ping通
ping tomcat01
ping db
但是查看各自的/etc/hosts,却看不到相应的配置,就是这么神奇。
 
所以war里使用上面的链接别名配置好互相要访问的地址,然后拷贝到对应的部署路径下,并重启。
docker-compose restart
 
Dockerfile:
也可以使用Dockerfile,将war包等直接封装为一个新的镜像。
sudo mkdir /dockerfile
sudo vi Dockerfile
FROM tomcat:latest
MAINTAINER "hanqunfeng <hanqf2008@163.com>"
ADD web.war /usr/local/tomcat/webapps/
 
 
将web.war拷贝到当前路径下
生成镜像:sudo docker build -t web/tomcat8 .  :注意最后面那个点,代表当前路径
 
启动:sudo run -p 8080:8080 -d web/tomcat8 
 
docker-compose:
tomcat01:
     depends_on:
       - db
     build: /dockerfile
     links:
       - db:db
     ports:
       - "8081:8080"
     restart: always
 
 
docker-compose up -d :第一次执行会自动创建一个镜像,并启动容器
如果该镜像已经被创建了,再次执行时要加上--build:docker-compose up --build -d,此时会重新创建该镜像。
 
 

 

 

 

 

分享到:
评论

相关推荐

    docker学习笔记.docx

    CentOS7安装Docker Docker_阿里云镜像加速器配置 Docker_帮助命令 Docker_镜像命令 Docker_容器命令 Docker_容器数据卷用V命令添加 ...Docker_安装mysql Docker_安装Redis Docker_本地镜像推送阿里云

    docker学习笔记.zip

    docker学习笔记,内含html版与markdown版,两个版本类型的文件。里面概括性介绍了docker的使用方法,可跟着步骤实际操作。内容主要包括docker常用命令的使用方法,容器数据卷技术做持久化,dockerfile编写,docker...

    java版商城源码下载-Study-Notes:学习笔记

    jQuery-: Ajax: Vue: 微信小程序: 动态网页: 编程强化 JVM优化: 数据结构算法: 软件项目管理 Maven: SVN: Git: Jenkins: 热门技术框架 SSM: Mybatis-Plus : Spring Data: Spring: 分布式架构 Dubbo、...

    【PDF版本】老男孩教育Linux高端运维及云计算架构师-就业班20170513V9.pdf

    - **Docker容器与微服务**:学习Docker的基本操作和微服务架构设计。 - **大数据Hadoop生态体系及实践**:掌握Hadoop生态系统的基本组件和数据处理流程。 ### 第七阶段:数据库管理 - **MySQL数据库管理**:包括...

    小丙的java面试资料.7z

    docker学习思维笔记.xmind Dubbo Dubbo服务框架面试专题及答案整理文档 Git基础.xmind Java并发体系学习思维笔记.xmind java筑基(基础)面试专题系列(一):Tomcat+Mysql+设计模式 java筑基(基础)面试专题系列...

    Docker:Docker学习笔记

    作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验Docker之所以发展如此Swift,也是因为它引发了一个标准...

    某内JAVA班的云笔记项目,mysql+H5,除了H5都是自己敲的

    【标题】中的“某内JAVA班的云笔记项目,mysql+H5,除了H5都是自己敲的”表明这是一个基于Java技术的云笔记应用程序,它使用MySQL作为后端数据库,并且前端界面采用了HTML5技术。这里的核心知识点包括: 1. **Java...

    研究:全栈工程师学习笔记; Spring登录,shiro登录,CAS单点登录和Spring boot oauth2单点登录; Spring数据缓存,支持Redis和EHcahce; web安全,常见的网络安全漏洞以及解决思路;常规组件,尺寸redis,mq等; quartz定时任务,支持持久化数据库,动态维护启动暂停关闭; docker基本用法,常用的镜像使用,Docker-MySQL,docker- Postgres,Docker-nginx,Docker-nexus,Docker-Redis,Dock

    本项目为全栈工程师学习笔记,不求最深最好,开源技术搬运工 其他项目:Spring Cloud微服务学习笔记 Spring Boot项目实践 Java体系知识点汇总: : 网站资源链接 S3基本使用事件 数据库隔离等级验证 常用JVM命令...

    学习笔记::books:JAVA,Spring,SpringMVC,SpringBoot,Mybatis,Vue,MySQL,MongoDB,Radis,Docker,Nginx,......笔记

    这些学习笔记涵盖了IT领域的多个重要方面,包括编程语言、框架、数据库、缓存技术、容器化和Web服务器等。下面将分别对这些知识点进行详细解释。 1. **Java**: Java是一种广泛使用的面向对象的编程语言,以其跨平台...

    笔记24-JAVAEE之Linux和云服务器

    - 将JAVAEE应用打包为WAR或EAR文件,部署到云服务器上的应用服务器(如Tomcat、JBoss、WebLogic等)。 - 使用容器化技术(Docker)封装应用,实现更高效、可移植的部署。 2. 数据库管理: - 在云服务器上安装和...

    尚硅谷spring boot基础篇.zip

    《尚硅谷Spring Boot基础篇》是一份全面介绍Spring Boot技术的资源集合,包含了代码实例、学习笔记和相关文档,旨在帮助初学者快速掌握这一流行的Java开发框架。Spring Boot以其简化Spring应用初始搭建以及运行过程...

    基于SSM框架+mysql搭建的云笔记系统(仿有道云笔记)源码.zip

    SSM框架是Java web开发中常用的三大框架Spring、Spring MVC和MyBatis...这个云笔记系统不仅涉及后端开发,也涵盖了前端和数据库等多个方面,提供了一个全面的实践平台,适合学习和理解SSM框架与MySQL数据库的整合应用。

    java-all:编程基础(java实现)

    notes多数文章来自网上优秀文章摘要整合,学习时自己记录的笔记 依赖环境: JDK版本:1.8; Mysql版本:8.0.16; Kafka版本:2.2.1; RabbitMQ版本:3.7.15; Redis版本:5.0.4; Maven版本:3.6.1 ZooKeeper...

    \Desktop\Spring Boot.7z

    总的来说,尚硅谷的Spring Boot课程全面覆盖了Spring Boot的基础到进阶内容,对于想要学习或提升Spring Boot技能的学习者来说是一份宝贵的资源。通过系统学习,你可以掌握Spring Boot的全貌,从而在实际项目开发中...

    尚硅谷springboot笔记

    《尚硅谷SpringBoot笔记》是一份综合性的学习资源,涵盖了SpringBoot的核心概念、实战技巧以及在JavaEE开发中的应用。这份笔记由尚硅谷的资深讲师精心编写,旨在帮助开发者快速掌握SpringBoot这一强大的微服务框架。...

    2021最新java面试合集pdf.rar

    MongoDB学习笔记.docx mybatis原理.docx MyBatis面试专题.docx MyBatis面试专题及答案.pdf Mybatis面试题(含答案).pdf MySQL性能优化的21个最佳实践.pdf mysql面试专题.docx MySQL面试题(含答案).pdf Netty面试...

    物流配货网.zip

    物流配货网是一个基于...此外,还可以学习Docker容器化部署、微服务架构等现代开发实践。 这个项目不仅提供了实际的JavaWeb应用示例,也为学习者提供了丰富的实践机会,有助于提升其在物流信息系统的开发和管理能力。

    linux笔记_运维

    在Linux运维中,掌握基本的命令是至...23. `docker`容器技术,`Jenkins`持续集成,`ELK`日志收集分析(Elasticsearch、Logstash、Kibana)。 以上只是Linux运维中的冰山一角,深入学习还需要结合实际操作和不断实践。

    云笔记资源代码

    可能采用了关系型数据库MySQL或者非关系型数据库MongoDB来存储用户的笔记内容。数据库操作通常会通过JDBC(Java Database Connectivity)或者ORM(对象关系映射)框架如Hibernate或MyBatis来实现,这些工具能够将...

    基于Springboot的学生读书笔记共享系统源码数据库.zip

    这是一个基于Spring Boot技术的学生读书笔记共享系统的源码和数据库项目,主要应用于教育和学习环境,旨在促进学生之间的知识交流和分享。该项目的核心是利用Java语言和Spring Boot框架构建一个高效、稳定且易于维护...

Global site tag (gtag.js) - Google Analytics