├── Dockerfile ├── README.md ├── entrypoint.sh └── init └── install.sh /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM centos 2 | 3 | WORKDIR /root/ 4 | #拷贝资源 5 | COPY init /root/init/ 6 | COPY entrypoint.sh /sbin/ 7 | #安装glibc-devel flex、bison mysql 支持库 中文乱码 8 | RUN yum install -y git gcc gcc-c++ make wget cmake mysql mysql-devel unzip iproute which glibc-devel flex bison ncurses-devel zlib-devel kde-l10n-Chinese glibc-common && yum clean all 9 | 10 | WORKDIR /root/ 11 | 12 | RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 13 | ENV LC_ALL zh_CN.utf8 14 | ENV DBIP 127.0.0.1 15 | ENV DBPort 3306 16 | ENV DBUser root 17 | ENV DBPassword password 18 | ##安装JDK 19 | RUN cd /root/init/ && wget --header "Cookie: oraclelicense=accept" -c --no-check-certificate http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm && rpm -ivh /root/init/jdk-8u131-linux-x64.rpm && rm -rf /root/init/jdk-8u131-linux-x64.rpm 20 | RUN echo "export JAVA_HOME=/usr/java/jdk1.8.0_131" >> /etc/profile && echo "CLASSPATH=\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar" >> /etc/profile && echo "PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile && echo "export PATH JAVA_HOME CLASSPATH" >> /etc/profile 21 | ENV JAVA_HOME /usr/java/jdk1.8.0_131 22 | ##安装Maven 23 | RUN cd /usr/local/ && wget http://mirrors.gigenet.com/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz && tar zxvf apache-maven-3.5.0-bin.tar.gz && echo "export MAVEN_HOME=/usr/local/apache-maven-3.5.0/" >> /etc/profile && echo "export PATH=\$PATH:\$MAVEN_HOME/bin" >> /etc/profile && source /etc/profile && mvn -v && rm -rf apache-maven-3.5.0-bin.tar.gz 24 | ENV MAVEN_HOME /usr/local/apache-maven-3.5.0 25 | ##安装resin 26 | RUN cd /usr/local/ && wget http://caucho.com/download/resin-4.0.51.tar.gz && tar zxvf resin-4.0.51.tar.gz && mv resin-4.0.51 resin && rm -rf resin-4.0.51.tar.gz 27 | RUN mkdir -p /usr/local/mysql && ln -s /usr/lib64/mysql /usr/local/mysql/lib && ln -s /usr/include/mysql /usr/local/mysql/include && echo "/usr/local/mysql/lib/" >> /etc/ld.so.conf && ldconfig 28 | RUN cd /usr/local/mysql/lib/ && ln -s libmysqlclient.so.*.*.* libmysqlclient.a 29 | RUN git clone https://github.com/Tencent/Tars.git 30 | ##安装java语言框架 31 | RUN source /etc/profile &&cd /root/Tars/java && mvn clean install && mvn clean install -f core/client.pom.xml && mvn clean install -f core/server.pom.xml 32 | 33 | ##安装c++语言框架 34 | RUN cd /root/Tars/cpp/thirdparty && sh thirdparty.sh 35 | RUN chmod u+x /root/Tars/cpp/build/build.sh && /root/Tars/cpp/build/build.sh all && /root/Tars/cpp/build/build.sh install 36 | ##打包框架基础服务 37 | RUN cd /root/Tars/cpp/build/ && make framework-tar 38 | RUN cd /root/Tars/cpp/build/ && make tarsstat-tar && make tarsnotify-tar && make tarsproperty-tar && make tarslog-tar && make tarsquerystat-tar && make tarsqueryproperty-tar 39 | 40 | ##安装核心基础服务 41 | RUN mkdir -p /usr/local/app/tars/ && cp /root/Tars/cpp/build/framework.tgz /usr/local/app/tars/ 42 | RUN cd /usr/local/app/tars/ && tar xzfv framework.tgz && rm -rf framework.tgz 43 | 44 | 45 | ENTRYPOINT ["/bin/bash","/sbin/entrypoint.sh"] 46 | 47 | CMD ["start"] 48 | 49 | 50 | #Expose ports 51 | EXPOSE 8080 52 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 本镜像是Tars的docker版本,未安装mysql 2 | 3 | 本镜像根据 https://github.com/luocheng812/docker_tars 修改; 4 | 5 | 在运行容器前请先安装数据库,并在运行容器时指定数据库的环境变量,数据库环境变量,如下: 6 | 7 | DBIP 127.0.0.1 8 | 9 | DBPort 3306 10 | 11 | DBUser root 12 | 13 | DBPassword password 14 | 15 | 创建容器时务必指定数据库地址和密码,如下: 16 | 17 | docker run -d -it --name tars --env DBIP=... --env DBPassword=password -v /data/:/data -p 8080:8080 tars 18 | -------------------------------------------------------------------------------- /entrypoint.sh: -------------------------------------------------------------------------------- 1 | 2 | #!/bin/bash 3 | 4 | if [ -d /root/init ];then 5 | 6 | for x in $(ls /root/init) 7 | do 8 | if [ -f /root/init/$x ];then 9 | chmod u+x /root/init/$x 10 | /bin/bash /root/init/$x 11 | rm -rf /root/init/$x 12 | fi 13 | done 14 | fi 15 | 16 | 17 | case ${1} in 18 | init) 19 | ;; 20 | start) 21 | 22 | #时间戳 23 | cp -rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone 24 | 25 | source /etc/profile 26 | /usr/local/app/tars/tars_install.sh 27 | /usr/local/app/tars/tarspatch/util/init.sh 28 | exec /usr/local/resin/bin/resin.sh console 29 | ;; 30 | *) 31 | exec "$@" 32 | ;; 33 | esac 34 | 35 | -------------------------------------------------------------------------------- /init/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ResourceDir=/root/res 4 | MachineIp=$(ip addr | grep inet | grep eth0 | awk '{print $2;}' | sed 's|/.*$||') 5 | MachineName=$(cat /etc/hosts | grep ${MachineIp} | awk '{print $2}') 6 | 7 | build_cpp_framework(){ 8 | 9 | echo "build cpp framework ...." 10 | ##Tars数据库环境初始化 11 | mysql -h${DBIP} -P${DBPort} -u${DBUser} -p${DBPassword} -e "grant all on *.* to 'tars'@'%' identified by 'tars2015' with grant option;" 12 | mysql -h${DBIP} -P${DBPort} -u${DBUser} -p${DBPassword} -e "grant all on *.* to 'tars'@'localhost' identified by 'tars2015' with grant option;" 13 | mysql -h${DBIP} -P${DBPort} -u${DBUser} -p${DBPassword} -e "grant all on *.* to 'tars'@'${MachineName}' identified by 'tars2015' with grant option;" 14 | mysql -h${DBIP} -P${DBPort} -u${DBUser} -p${DBPassword} -e "flush privileges;" 15 | 16 | sed -i "s/192.168.2.131/${MachineIp}/g" `grep 192.168.2.131 -rl /root/Tars/cpp/framework/sql/*` 17 | sed -i "s/db.tars.com/${DBIP}/g" `grep db.tars.com -rl /root/Tars/cpp/framework/sql/*` 18 | 19 | cd /root/Tars/cpp/framework/sql/ 20 | sed -i "s/proot@appinside/h${DBIP} -P${DBPort} -u${DBUser} -p${DBPassword} /g" `grep proot@appinside -rl ./exec-sql.sh` 21 | chmod u+x /root/Tars/cpp/framework/sql/exec-sql.sh 22 | /root/Tars/cpp/framework/sql/exec-sql.sh 23 | 24 | sed -i "s/192.168.2.131/${MachineIp}/g" `grep 192.168.2.131 -rl /usr/local/app/tars/*` 25 | sed -i "s/db.tars.com/${DBIP}/g" `grep db.tars.com -rl /usr/local/app/tars/*` 26 | sed -i "s/dbport=3306/dbport=${DBPort}/g" `grep 3306 -rl /usr/local/app/tars/*` 27 | sed -i "s/registry.tars.com/${MachineIp}/g" `grep registry.tars.com -rl /usr/local/app/tars/*` 28 | sed -i "s/web.tars.com/${MachineIp}/g" `grep web.tars.com -rl /usr/local/app/tars/*` 29 | 30 | chmod u+x /usr/local/app/tars/tars_install.sh 31 | } 32 | 33 | build_web_mgr(){ 34 | 35 | echo "build web manager ...." 36 | 37 | ##安装web管理系统 38 | cd /root/Tars/web/ 39 | sed -i "s/db.tars.com/${DBIP}/g" `grep db.tars.com -rl /root/Tars/web/src/main/resources/app.config.properties` 40 | sed -i "s/3306/${DBPort}/g" `grep 3306 -rl /root/Tars/web/src/main/resources/app.config.properties` 41 | sed -i "s/registry1.tars.com/${MachineIp}/g" `grep registry1.tars.com -rl /root/Tars/web/src/main/resources/tars.conf` 42 | sed -i "s/registry2.tars.com/${MachineIp}/g" `grep registry2.tars.com -rl /root/Tars/web/src/main/resources/tars.conf` 43 | sed -i "s/DEBUG/INFO/g" `grep DEBUG -rl /root/Tars/web/src/main/resources/log4j.properties` 44 | source /etc/profile 45 | mvn clean package 46 | cp /root/Tars/build/conf/resin.xml /usr/local/resin/conf/ 47 | cp /root/Tars/web/target/tars.war /usr/local/resin/webapps/ 48 | } 49 | 50 | 51 | build_cpp_framework 52 | 53 | build_web_mgr 54 | --------------------------------------------------------------------------------