Docker练习之简单War包部署

GitHub地址:点击前往

得到源码以后,只需把项目里的数据库的配置更改为自己本地的,然后重新打包放在tomcat目录下,再把docker-ssm/mysql目录下的数据库脚本docker_ssm_schema.sql导入到本地。

打开本地mysql数据库的user表,添加%(外网ip能访问)类型的guest用户,这是为了服务器访问数据库添加用户。

创建用户:

create user 'guest'@'%' identified by '';

为用户分配权限:

grant all privileges on dbname.* to 'guest'@'%' identified by '';

目录结构:


War包部署

  • 项目打包成war包,放入docker-ssm/tomcat下

  • 编写tomcat镜像的Dockerfile

# 直接从docker提供的远程镜像仓库中拉取最新的tomcat组件
FROM tomcat

# 本镜像的制作者的信息
MAINTAINER "wrkd35" <2819736494@qq.com>

# 把该容器的时区设置为北京时区
ENV TZ=Asia/Shanghai

# 把当前文件目录下的docker-ssm.war移动到容器中tomcat自动启动的目录下
COPY ./docker-ssm.war /usr/local/tomcat/webapps/
  • 编写mysql镜像的Dockerfile

FROM mysql:latest

MAINTAINER "wrkd35" <2819736494@qq.com>

# mysql的工作位置
ENV WORK_PATH /usr/local/

# 定义会被容器自动执行的目录
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d

# 初始化数据库的SQL文件
ENV FILE_0 docker_ssm_schema.sql

# 执行SQL
ENV INSTALL_DATA_SHELL docker-entrypoint.sh

# 把要执行的sql文件放到MySQL的工作目录下
COPY ./$FILE_0 $WORK_PATH/

# 把要执行的shell文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个shell
COPY ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/

# 给执行文件增加可执行权限
RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL
  • 编写docker-compose.yml

version: "2"

services:                        #控制image的运行方式
  tomcat:                        #编排文件中容器的别名
    build: ./tomcat              #从当前文件目录下的tomcat文件夹下寻找Dockerfile文件开始构建tomcat镜像
    image: tomcat-ssm            #构建之后镜像的名字
    container_name: tomcat-ssm   #容器的名字
    restart: always              #容器重启之后总是会重新构建本镜像
    depends_on:                  #依赖于mysql和redis,目的是为了在mysql和redis启动之后再启动本容器
      - mysql
      - redis
    ports:
      - "8888:8080"              #冒号左边的8888代表宿主机中的端口,右边的8080代表容器中的端口

  mysql:
    build: ./mysql
    image: mysql-ssm:mysql
    container_name: mysql-ssm
    restart: always
    ports:
      - "3301:3306"
    volumes:                     #这里多挂载了一个conf文件,目的就是为了防止mysql原始配置文件不生效,产生乱码的情况
      - "/temp/test/docker-ssm/conf:/etc/mysql/conf.d"
      - "/temp/test/docker-ssm/logs:/logs"
      - "/temp/test/docker-ssm/data:/var/lib/mysql"
    command: [
      '--character-set-server=utf8mb4',
      '--collation-server=utf8mb4_unicode_ci'
    ]
    environment:                #在mysql初始化的时候设置登陆密码
      MYSQL_ROOT_PASSWORD: ""

  redis:
    image: redis:latest          #如果本地有该名称的镜像,那么就拉取本地的镜像,如果本地没有,则从数据仓库中拉取最新版的镜像
    container_name: redis-ssm
    restart: always
    ports:
      - "6380:6379"
    volumes:
      - "/temp/test/docker-ssm/redis_data:/data"

      #将宿主机上的redis_data文件挂载到本容器上的/data上,达到数据持久化
      #需要注意的是,如果volume是空的而container中的目录有内容,那么docker会将container目录中的内容拷贝到volume中
      #但是如果volume中已经有内容,则会将container中的目录覆盖
  • 把docker-ssm文件夹上传至服务器

  • 运行docker-compose

docker-compose up -d
  • 浏览器输入以下地址,数据库可查看新增记录
# 主机号+端口号+项目名+接口地址
服务器IP:配置tomcat的dockerfile文件里的端口号/docker-ssm/docker/test

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值