例如: --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