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]


下面我们以启动项目的顺序来编写文件
[b]1、build.sh[/b]

#!/bin/bash

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

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



[i] #赋权build.sh[/i]

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


[b]2、Dockerfile[/b]

#!/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'


[b]3、start.sh[/b]

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

[b]4、jdbc.properties[/b]

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文件中最后替换的变量一致


[b]5、执行build.sh[/b]

root@tomhat:/app/china-ops.com# ./build.sh


[b]6、启动容器[/b]

sudo docker run -i -t -p 8080:8080 china-ops:1.0.1 /bin/bash
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值