diff --git a/Dockerfile b/Dockerfile index fb2e495..2aed45f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,10 @@ FROM docker.io/openjdk:8u121-jdk - -ENV TALE_HOME /var/tale_home -ENV TALE_SLAVE_AGENT_PORT 9000 +WORKDIR /webapp/ EXPOSE 9000 +#COPY tale.sh /webapp/ +#ENTRYPOINT ["/usr/bin/java", "-jar", "/webapp/tale/tale-least.jar"] +ENTRYPOINT ["sh","./tale/tale.sh"] +CMD ["start"] -#CMD ["/usr/bin/java", "-jar", "/var/tale_home/tale-1.2.11.jar"] -#copy run.sh to /run.sh -COPY run.sh /run.sh -RUN chmod 700 /run.sh -ENTRYPOINT ["/run.sh"] diff --git a/README.md b/README.md index 74020ed..038a9bd 100644 --- a/README.md +++ b/README.md @@ -2,24 +2,56 @@ tale docker # 使用说明 -下载到本地,使用`docker build -t tale:1.0 . ` 命令构建tale镜像 - -将tale*.jar,lib目录和resources目录放在宿主机的/home/tale目录下,之后使用下面的命令启动tale的docker容器 +把Dockerfile下载到本地,使用`docker build -t tale:1.0 . ` 命令构建tale镜像 + +

点击 下载 最新版的Tale程序,该程序是一个zip包,解压后的目录结构如下。

+ +``` + tale + ├── lib + ├── resources + └── tale-least.jar + ``` + +修改tale/resource/app.properties文件com.blade.logger.logFile=./tale/logs/tale.log +将run.sh放到tale目录下,目录如下, + +``` + tale + ├── lib + ├── resources + ├── tale-least.jar + └── tale.sh``` + +# 如果觉得配置麻烦,提供一键包dockerTale.zip欢迎使用 +将tale目录放在宿主机的/home目录下,之后使用下面的命令启动tale的docker容器 ``` bash docker run -d --privileged --hostname tale --name tale -v /etc/localtime:/etc/localtime:ro --v /home/tale:/var/tale_home -p 127.0.0.1:80:9000 +-v /home/tale:/webapp/tale -p 127.0.0.1:80:9000 -m 1024m --memory-swap -1 tale:1.0 ``` -命令说明: -- run -d #后台运行 -- v /etc/localtime:/etc/localtime:ro #容器使用宿主机的时间 -- v /home/tale:/var/tale_home #宿主机的/home/tale与容器的/var/tale_home关联,可自行修改***/home/tale*** -- p 127.0.0.1:80:9000 #宿主机的80端口指向容器的9000端口 - +命令说明:
+- run -d #后台运行
+- v /etc/localtime:/etc/localtime:ro #容器使用宿主机的时间
+- v /home/tale:/var/tale_home #宿主机的/home/tale与容器的/var/tale_home关联,可自行修改***/home/tale***
+- p 127.0.0.1:80:9000 #宿主机的80端口指向容器的9000端口
+-m 1024m --memory-swap -1 #指定限制内存大小并且设置memory-swap值为-1,表示容器程序使用内存受限,而交换空间使用不受限制(宿主 交换支持使用多少则容器即可使用多少。如果--memory-swap设置小于--memory则设置不生效,使用默认设置) 浏览器访问`127.0.0.1`即可 + +一些使用说明
+docker exec -it 容器id bash ./tale/tale.sh log 查看容器内应用日志同 docker logs -f 容器id,当然你在宿主机tale log目录 tali -f 也可以看到
+docker exec -it 容器id bash ./tale/tale.sh status 容器tale状态
+docker exec -it 容器id bash ./tale/tale.sh reload 重启容器内应用
+docker exec -it 容器id bash ./tale/tale.sh stop 关掉容器内tale应用
+docker exec -it 容器id bash ./tale/tale.sh start 开启容器内tale应用
+ +# 添加docker-compose文件 +我这里有了docker-compse就不需要dockerfile了 : ) + +docker-compose_v2.yaml 是配合Dockerfile使用 diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..10e6c7f --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,16 @@ +version: '3.2' + + +services: + web: + build: . + tty: true + working_dir: /webapp/ + ports: + - '9000:9000' + + volumes: + - /etc/localtime:/etc/localtime:ro + - /usr/local/webapp/dockerTale/tale:/webapp/tale + + command: ./tale/tale.sh start diff --git a/docker-compose_v2.yaml b/docker-compose_v2.yaml new file mode 100644 index 0000000..a491389 --- /dev/null +++ b/docker-compose_v2.yaml @@ -0,0 +1,16 @@ +version: '3.2' + + +services: + web: + build: . + #tty: true + working_dir: /webapp/ + ports: + - '9000:9000' + + volumes: + - /etc/localtime:/etc/localtime:ro + - /usr/local/webapp/dockerTale/tale:/webapp/tale + + command: ./tale/tale.sh start diff --git a/dockerTale.zip b/dockerTale.zip new file mode 100644 index 0000000..21c591f Binary files /dev/null and b/dockerTale.zip differ diff --git a/run.sh b/run.sh deleted file mode 100644 index b241dee..0000000 --- a/run.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -#find tale jar package -TALE_NAME=$(find $TALE_HOME -name "tale*.jar") - -echo $TALE_NAME - -#run the tale -java -jar $TALE_NAME - diff --git a/tale.sh b/tale.sh new file mode 100644 index 0000000..fc3b2eb --- /dev/null +++ b/tale.sh @@ -0,0 +1,96 @@ +#!/bin/bash +# author:datayang +#url:https://github.com/datayang/tale-docker/edit/master/tale.sh +#reference:https://github.com/otale/scripts + + +# Usage: sh tale.sh start "-Xms128m -Xmx128m" +# Usage: sh tale.sh stop +# Usage: sh tale.sh status +# Usage: sh tale.sh reload 10 +# Usage: sh tale.sh log + +env_args="-Xms128m -Xmx128m" +sleeptime=0 +arglen=$# + +# get tale pid +get_pid(){ + pname="`find .. -name 'tale*.jar'`" + pname=${pname:3} + pid=`ps -ef | grep $pname | grep -v grep | awk '{print $2}'` + echo "$pid" +} + +startup(){ + pid=$(get_pid) + if [ "$pid" != "" ] + then + echo "Tale already startup!" + else + jar_path=`find .. -name 'tale*.jar'` + echo "jarfile=$jar_path" + cmd="java $1 -Djava.security.egd=file:/dev/./urandom -jar $jar_path > ./tale/tale.out < /dev/null &" + echo "cmd: $cmd" + java $1 -Djava.security.egd=file:/dev/./urandom -jar $jar_path > ./tale/tale.out < /dev/null & + show_log + fi +} + +shut_down(){ + pid=$(get_pid) + if [ "$pid" != "" ] + then + kill -9 $pid + echo "Tale is stop!" + else + echo "Tale already stop!" + fi +} + +show_log(){ + tail -f ./tale/tale.out +} + +show_help(){ + echo -e "\r\n\t欢迎使用Tale Blog" + echo -e "\r\nUsage: sh tale.sh start|stop|reload|status|log" + exit +} + +show_status(){ + pid=$(get_pid) + if [ "$pid" != "" ] + then + echo "Tale is running with pid: $pid" + else + echo "Tale is stop!" + fi +} + +if [ $arglen -eq 0 ] + then + show_help +else + if [ "$2" != "" ] + then + env_args="$2" + fi + case "$1" in + "start") + startup "$env_args" + ;; + "stop") + shut_down + ;; + "reload") + echo "reload" + ;; + "status") + show_status + ;; + "log") + show_log + ;; + esac +fi