`

docker 部署web项目

阅读更多
修改docker容器的hosts
例如: --add-host puppetmaster:192.168.0.3 ,如果想添加多条,就用多个--add-host就OK了

在系统根目录创建文件夹app
 root@tomhat:/home/tomhat#cd / \
 root@tomhat: mkdir app


以www.china-ops.com网站为基础做列

在app下创建文件夹china-ops.com已做不同项目的区分
在china-ops.com内创建文件及文件夹,目录结构如下:
 root@tomhat:/app/docker/china-ops.com# tree
 .
 ├── assist
 │   ├── jdbc.properties
 │   └── start.sh
 ├── build.sh
 ├── chinaops.sql
 ├── Dockerfile
 ├── ecloud.war

说明:
[list]
[*] #build.sh 为启动docker容器的脚本
[*] #Dockerfile为创建docker容器的过程
[*] #assist/jdbc.properties 为www.china-ops.com项目启动时数据库的链接配置; 注意:此文件名称要和项目中数据链接配置文件名称相同
[*] #assist/start.sh 为docker容器启动后执行tomcat的执行脚本
[*] #ecloud.war 是项目的war包 chinaops.sql 是项目所需的数据库sql
[/list]


下面我们以启动项目的顺序来编写文件 
1、build.sh
 #!/bin/bash

 REPOSITORY='registry.ecloud.com.cn'
 NAME=china-ops
 VERSION=1.0

 docker build -t $REPOSITORY/$NAME:$VERSION .



#赋权build.sh
 root@tomhat:/app/china-ops.com# chmod 777 build.sh | chmod +x build.sh


2、Dockerfile
  #!/bin/sh

 FROM registry.ecloud.com.cn/tomcat:7.0.62

 MAINTAINER 维护者信息

 #设置环境变量 ENV命令 DIR_WEBAPP变量名 /usr/local/tomcat/webapps变量的值
 ENV DIR_WEBAPP /usr/local/tomcat/webapps
 ENV DB_CONFIG_FILE jdbc.properties

 #删除webapps下所有文件
 RUN rm -rf $DIR_WEBAPP/* 

 #在webapps下添加ecloud.war并改名ROOT.war
 ADD ecloud.war $DIR_WEBAPP/ROOT.war 

 #解压webapps下的ROOT.war到ROOT目录下
 RUN unzip $DIR_WEBAPP/ROOT.war -d $DIR_WEBAPP/ROOT/

 #拷贝assist下的jdbc.properties、start.sh文件到/home/目录下 
 #注意: COPY命令前面的参数是源地址(相对地址) 后面参数是目的地址(绝对地址)
 COPY   assist/ /home/ 

 #执行/home/start.sh
 ENTRYPOINT  '/home/start.sh'


3、start.sh
 #!/bin/bash
#设置变量:数据库所在主机的(DB_HOST)ip,(DB_NAME)数据库名,(DB_USER)用户名,(DB_PASS)密码;
 #注意:配置的用户名和密码必须有远程访问数据库的权限
 DB_HOST=${DB_HOST:-"172.17.0.1"}
 DB_NAME=${DB_NAME:-"chinaops"}
 DB_USER=${DB_USER:-"root"}
 DB_PASS=${DB_PASS:-"root"}

 # is a mysql database linked?
 # requires that the mysql containers have exposed
 # port 3306 .
 if [ -n "${MYSQL_PORT_3306_TCP_ADDR}" ]; then
     DB_HOST=${DB_HOST:-${MYSQL_PORT_3306_TCP_ADDR}}
     DB_PORT=${DB_PORT:-${MYSQL_PORT_3306_TCP_PORT}}
    [i] # support for linked sameersbn/mysql image[/i]
     DB_USER=${DB_USER:-${MYSQL_ENV_DB_USER}}
     DB_PASS=${DB_PASS:-${MYSQL_ENV_DB_PASS}}
     DB_NAME=${DB_NAME:-${MYSQL_ENV_DB_NAME}}
 fi

 if [ -z "${DB_HOST}" ]; then
   echo "ERROR: "
   echo "  Please configure the database connection."
   echo "  Cannot continue without a database. Aborting..."
   exit 1
 fi
 #以上是验证数据库主机的过程

 #下面拷贝/home/jdbc.properties到$DIR_WEBAPP/ROOT/WEB-INF/classes/ 替换原来项目中的数据库配置文件
 cp  /home/$DB_CONFIG_FILE $DIR_WEBAPP/ROOT/WEB-INF/classes/

 #下面是用上面定义好的数据库所在主机的(DB_HOST)ip,(DB_NAME)数据库名,(DB_USER)用户名,(DB_PASS)密码
 sed 's/{{DB_HOST}}/'"${DB_HOST}"'/' -i $DIR_WEBAPP/ROOT/WEB-INF/classes/$DB_CONFIG_FILE
 sed 's/{{DB_NAME}}/'"${DB_NAME}"'/' -i $DIR_WEBAPP/ROOT/WEB-INF/classes/$DB_CONFIG_FILE
 sed 's/{{DB_USER}}/'"${DB_USER}"'/' -i $DIR_WEBAPP/ROOT/WEB-INF/classes/$DB_CONFIG_FILE
 sed 's/{{DB_PASS}}/'"${DB_PASS}"'/' -i $DIR_WEBAPP/ROOT/WEB-INF/classes/$DB_CONFIG_FILE

 #执行运行tomcat的脚本
 exec /usr/local/tomcat/bin/catalina.sh run


#赋权start.sh
  root@tomhat:/app/china-ops.com/assist# chmod 777 start.sh | chmod +x start.sh

4、jdbc.properties
 jdbc.driverClass=com.mysql.jdbc.Driver
 jdbc.url=jdbc:mysql://{{DB_HOST}}:3306/{{DB_NAME}}?useUnicode=true&characterEncoding=utf-8
 jdbc.username={{DB_USER}}
 jdbc.password={{DB_PASS}}

 hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
 hibernate.show_sql=false

 #注意:{{DB_HOST}} 等变量必须和start.sh文件中最后替换的变量一致 


5、执行build.sh
 root@tomhat:/app/china-ops.com# ./build.sh


6、启动容器
sudo docker run -i -t -p 8080:8080 china-ops:1.0.1 /bin/bash
分享到:
评论

相关推荐

    docker部署Java项目流程

    Docker 部署 Java 项目流程 Docker 是一个开源的应用容器引擎,基于 Go 语言开发并遵从 Apache2.0 协议开源。使用 Docker 可以让开发者封装他们的应用以及依赖包到一个可移植的容器中,然后发布到任意的 Linux 机器...

    docker部署nginx,挂载多个前端部署目录以及跨域问题解决方案.txt

    为了节约成本,很多时候一台server 的nginx可能要部署多个前端的情况,本实例是在docker环境下部署两个前端,同时处理前端调用后端跨域问题,本示例为阿里云centos7 系统docker20.10.6环境下nginx1.19.5版本 ...

    使用 Docker 部署 Django web 应用.zip

    使用 Docker 部署 Django web 应用.zip使用 Docker 部署 Django web 应用.zip使用 Docker 部署 Django web 应用.zip使用 Docker 部署 Django web 应用.zip使用 Docker 部署 Django web 应用.zip使用 Docker 部署 ...

    Docker部署web项目的实现

    上一篇已经安装好docker服务,下面继续介绍如何部署web项目 一:随便创建目录dock,准备好如下文件: 二、编写Dockerfile,通过它能快速地构建docker镜像 vi Dockerfile 新增如下配置 FROM centos MAINTAINER ...

    详解如何使用Docker部署一个web项目并打包成镜像文件

    docker基本入门以后,可以试试打包docker镜像与dockerfile了 docker镜像 docker hub仓库有2类仓库,用户仓库和顶层仓库,用户仓库由docker用户创建的,顶层仓库由docker内部的人来管理的。仓库里存放的是镜像文件,...

    docker入门(利用docker部署web应用)

    docker入门(利用docker部署web应用)。 一篇文章带你快速了解!

    UWB项目Docker部署1

    nginx 服务是 UWB 项目 Docker 部署的重要组件,nginx 服务用于提供 Web 服务。在 UWB 项目 Docker 部署过程中,使用 nginx 服务可以提供 Web 服务。 UWB 项目 Docker 部署是使用 Docker 技术实现容器化部署的示例...

    使用Docker部署Web在线聊天室Rocket.Chat

    自托管和托管服务:Rocket.Chat 提供了自托管和托管服务两种部署方式,用户可以根据需求选择适合自己的部署方式,自由灵活。 定制化和扩展性:Rocket.Chat 具有丰富的插件系统和API支持,用户可以根据自己的需求...

    基于Jenkins+Gitlab+Docker实现SpringBoot项目自动部署

    基于Jenkins+Gitlab+Docker实现SpringBoot项目自动部署 本文主要介绍了基于Jenkins、Gitlab和Docker实现SpringBoot项目自动部署的方法。下面将从Jenkins的安装、配置到自动化构建和部署的整个过程进行详细说明。 ...

    centos6.7安装fastdfs docker部署

    CentOS 6.7 安装 FastDFS Docker 部署 在本文中,我们将详细介绍 CentOS 6.7 下安装 FastDFS 文件服务器和 Docker 容器集群的过程。 1. 安装 JDK 1.8 在安装 FastDFS 之前,我们需要首先安装 JDK 1.8。在 CentOS ...

    docker registry与registry-web端管理部署.docx

    讲述了如何部署registry、registry-web的部署,以及registry-web如何管理registry私库的镜像上传、下载的授权、镜像删除、用户管理

    docker部署linux系统

    docker部署linux系统 Docker 是一个容器化平台,允许用户在轻量级的虚拟化环境中运行应用程序。 Docker 部署 Linux 系统是指使用 Docker容器来部署和管理 Linux 操作系统。这种方法可以提供一个灵活、可靠和高效的...

    Jitsi Meet 的 Web 组件的 docker 镜像,支持私网部署

    Jitsi Meet 的 Web 组件的 docker 镜像,支持私网部署

    使用Docker部署Angular项目的方法步骤

    Docker 部署 Angular 项目有两种方法,一种是服务端渲染,这个官方文档已有说明,另一种就是使用 node 镜像编译后放入 web 服务器。由于在 node 环境,所以使用 express 最为便捷了。 创建 server.js const express...

    如何使用Docker部署GoWeb应用程序共16页.pdf

    如何使用Docker部署GoWeb应用程序共16页.pdf.zip

    docker 安装与部署,使用docker部署java 微服务, 使用docker运行gpu 镜像

    docker 安装操作说明文档,部署web应用; 使用docker运行gpu 镜像,共享宿主机 显存

Global site tag (gtag.js) - Google Analytics