前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker-Compose安装Java Web实例

Docker-Compose安装Java Web实例

作者头像
wuweixiang
发布2018-12-19 15:25:28
1.9K0
发布2018-12-19 15:25:28
举报
文章被收录于专栏:吴伟祥

本文参考: docker学习笔记之五:进阶实战--mysql+tomcat Docker-Compose的介绍可参考:Docker学习——Docker 三剑客(七)

一、mysql - Docker Hub

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

参考资料:https://store.docker.com/images/mysql

1.下载mysql镜像

代码语言:javascript
复制
docker pull mysql:5.7

2.启动mysql容器

代码语言:javascript
复制
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:5.7


#-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  

#提示:killall -9 mysqld 立即杀死进程 (多执行几次)
  

#vi my-config.cnf  

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

3.Docker-Compose方式

代码语言:javascript
复制
dbmysql:  
  image: docker.io/mysql:5.7
  ports:  
    - 3306:3306  
  environment:  
    MYSQL_ROOT_PASSWORD: password  
  volumes:  
    - /mysql/datadir:/var/lib/mysql  
    - /mysql/conf:/etc/mysql/conf.d:ro
代码语言:javascript
复制
[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

二、tomcat - Docker Hub

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

参考资料:https://store.docker.com/images/tomcat

1.下载tomact镜像

代码语言:javascript
复制
docker pull tomcat

2.启动tomact容器

代码语言:javascript
复制
docker run -d -p 8080:8080 -v /tomcat/webapps:/usr/local/tomcat/webapps tomcat:8.5.35-jre8

这样,只需要将war包拷贝到宿主机的/tomcat/webapps下即可

3.Docker-Compose方式

代码语言:javascript
复制
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

上面这种方式,随便进入任何一个容器,执行ping命令,都可以互相ping通

代码语言:javascript
复制
ping tomcat01

ping db

但是查看各自的/etc/hosts,却看不到相应的配置,就是这么神奇。

所以war里使用上面的链接别名配置好互相要访问的地址,然后拷贝到对应的部署路径下,并重启。

代码语言:javascript
复制
[root@izwz9eftauv7x69f5jvi96z tomcat]# docker-compose restart
Restarting tomcat_tomcat02_1 ... done
Restarting tomcat_tomcat01_1 ... done
Restarting tomcat_db_1       ... done

三、实战中

也可以使用Dockerfile,将war包等直接封装为一个新的镜像。

sudo mkdir /dockerfile

sudo vi Dockerfile

代码语言:javascript
复制
FROM tomcat:8.5.35-jre8
MAINTAINER "wwx <wuweixiang.alex@gmail.com>"  
ADD web.war /usr/local/tomcat/webapps/

将web.war拷贝到当前路径下

代码语言:javascript
复制
# 生成镜像
docker build -t wuweixiang/tomcat8.5.35-jre8 .     # 注意最后面那个点,代表当前路径

# 启动
docker run -p 8080:8080 -d wuweixiang/tomcat8.5.35-jre8

docker-compose

代码语言:javascript
复制
tomcat01:  
     depends_on:  
       - db  
     build: /dockerfile  
     links:  
       - db:db  
     ports:  
       - "8081:8080"  
     restart: always

docker-compose up -d :第一次执行会自动创建一个镜像,并启动容器

如果该镜像已经被创建了,再次执行时要加上--build:docker-compose up --build -d,此时会重新创建该镜像。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、mysql - Docker Hub
    • 1.下载mysql镜像
      • 2.启动mysql容器
        • 3.Docker-Compose方式
        • 二、tomcat - Docker Hub
          • 1.下载tomact镜像
            • 2.启动tomact容器
              • 3.Docker-Compose方式
              • 三、实战中
              相关产品与服务
              云数据库 SQL Server
              腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档