- 创建Dockerfile文件
FROM openjdk:8
WORKDIR /home/service/xxx
COPY ./xxx.jar .
ENV JAVA_OPTS="\
-server \
-Xms2048m \
-Xmx2048m \
-Xmn1024m \
-XX:MetaspaceSize=256m \
-XX:MaxMetaspaceSize=512m \
-XX:-OmitStackTraceInFastThrow \
-Dcom.sun.management.jmxremote.rmi.port=19008 \
-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.port=19008 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.local.only=false \
-Djava.rmi.server.hostname=192.x.x.x" \
SPRING_PROFILES_ACTIVE="prod"
ENTRYPOINT ["sh","-c","java ${JAVA_OPTS} -Dspring.profiles.active=${SPRING_PROFILES_ACTIVE} -jar /home/service/xxx/xxx.jar"]
- 启动镜像脚本
#!/bin/bash
CONTAINER="xxx"
IMAGE_NAME="xxx"
echo "service image: $IMAGE_NAME"
echo "service container: $CONTAINER"
cid=$(docker ps|grep "$CONTAINER"|awk '{print $1}')
if [ -n "$cid" ];
then
echo "docker stop $cid"
docker stop $cid && docker rm $cid
fi
# 获取最新的镜像
imgid=$(docker images|grep '$IMAGE_NAME'|awk '{print $3}')
if [ -n "$imgid" ];
then
echo "docker rmi $imgid"
docker rmi "$imgid"
fi
# 新建镜像
docker build -t xxx .
# 创建并启动容器
docker run -d --restart=always --name xxx -p 8080:8080 -p 19008:19008 -v /etc/localtime:/etc/localtime \
-v /data/services/xxx:/home/service/xxx xxx
sleep 5
# 打印日志
docker logs --tail=200n xxx