DockerFile
FROM java:8
MAINTAINER tiger <tiger@gmail.com>
COPY ./a.sh /home/
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone && \
chmod 777 /home/a.sh && \
cd /home/ && \
# 测试java环境
echo 'public class Main { public static void main(String[] args) { System.out.println("测试java环境===Java code is running fine!"); } }' > Main.java && \
javac Main.java && \
java Main
ENTRYPOINT ["/home/a.sh"]
#端口
EXPOSE 8080
a.sh脚本
#!/bin/sh
time=$(date "+%Y-%m-%d %H:%M:%S")
java -jar /home/meridian-0.0.1-SNAPSHOT.jar --spring.config.location=/home/application.yml > /home/log.log 2>&1 &
echo $time"-启动成功"
##在脚本最后一行添加tail -f /dev/null,这个命令永远完成不了,所以该脚本一直不会执行完,所以该容器永远不会退出
tail -f /dev/null
测试脚本会不会出现 -bash: ./a.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目
出现执行下面操作:
sed 's/\r//' -i a.sh
创建docker镜像包jar命令
docker build -t jar -f Dockerfile .
运行容器命令(执行脚本a.sh可在容器运行后随意更改,然后重启容器即可docker restart java-jar):
docker run -id --name zw -v /opt/zw/:/home/ -p 8080:8080 zw