已经做好的镜像(110M 支持中文): happysea/ubuntu:jre-17-24.04
Dockerfile
FROM ubuntu:24.04 RUN apt-get update && apt-get install -y \ openjdk-17-jre-headless \ fonts-wqy-microhei \ language-pack-zh-hans \ --no-install-recommends && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* ENV LANG=zh_CN.UTF-8 \ LANGUAGE=zh_CN:zh \ LC_ALL=zh_CN.UTF-8
使用: 说明, 如果是旧版本的docker 内核请add --security-opt seccomp=unconfined 启动 eg: docker run --security-opt seccomp=unconfined xxx
# 服务名字(确保变量在 sudo 前已展开) export SERVICE_NAME=sea-core-service # 创建宿主机目录 sudo mkdir -p /home/sea/${SERVICE_NAME}/log/ sudo mkdir -p /home/sea/${SERVICE_NAME}/jar/ sudo mkdir -p /home/sea/${SERVICE_NAME}/token/ sudo mkdir -p /home/sea/${SERVICE_NAME}/upload/ # 设置目录权限(让容器内用户可写,假设 UID 1000) sudo chmod 777 /home/sea/${SERVICE_NAME}/{log,token,upload} #sudo chown -R 1000:1000 /home/sea/${SERVICE_NAME}/{log,token,upload} # 启动服务 sudo docker run -itd --pids-limit -1 --ulimit nproc=unlimited \ --restart=unless-stopped \ --net host \ --name ${SERVICE_NAME} \ -m 2048m \ -v /home/sea/${SERVICE_NAME}/log/:/tmp/log/ \ -v /home/sea/${SERVICE_NAME}/jar/app.jar:/opt/app.jar \ -v /home/sea/${SERVICE_NAME}/token/:/opt/cache/token/ \ -v /home/sea/${SERVICE_NAME}/upload/:/opt/upload/ \ happysea/ubuntu:jre-17-24.04 \ exec java -Xms512m -Xmx1500m -Xss1024k -Djava.security.egd=file:/dev/./urandom \ --add-opens java.base/java.math=ALL-UNNAMED \ --add-opens java.base/java.lang=ALL-UNNAMED \ --add-opens java.base/java.util=ALL-UNNAMED \ --add-opens java.base/java.text=ALL-UNNAMED \ --add-opens java.base/java.time=ALL-UNNAMED \ --add-opens java.desktop/java.awt.font=ALL-UNNAMED \ -jar /opt/app.jar \ --dev.open.mode=true \ --dev.file.mode=true
建议直接当前用户的 home 目录,没有权限问题
set -e #修改为自己的名字 SERVICE_NAME=sea-core-service mkdir -p ~/${SERVICE_NAME}/log/ mkdir -p ~/hadoop/${SERVICE_NAME}/jar/ mkdir -p ~/hadoop/${SERVICE_NAME}/token/ mkdir -p ~/${SERVICE_NAME}/upload/ echo "Stop old container if exist" docker stop $SERVICE_NAME || true sleep 1 docker rm $SERVICE_NAME || true sleep 1 echo "Start create $SERVICE_NAME container " cp ~/app.jar ~/${SERVICE_NAME}/jar/ # 对于旧版本的docker 内核需要 add # --security-opt seccomp=unconfined # start docker run -itd --pids-limit -1 \ --restart=unless-stopped \ --net host \ --name ${SERVICE_NAME} \ -m 2048m \ -v ~/${SERVICE_NAME}/log/:/tmp/log/ \ -v ~/${SERVICE_NAME}/jar/app.jar:/opt/app.jar \ -v ~/${SERVICE_NAME}/token/:/opt/cache/token/ \ -v ~/${SERVICE_NAME}/upload/:/opt/upload/ \ happysea/ubuntu:jre-17-24.04 \ java -Xms512m -Xmx1500m -Xss1024k -Djava.security.egd=file:/dev/./urandom \ --add-opens java.base/java.math=ALL-UNNAMED \ --add-opens java.base/java.lang=ALL-UNNAMED \ --add-opens java.base/java.util=ALL-UNNAMED \ --add-opens java.base/java.text=ALL-UNNAMED \ --add-opens java.base/java.time=ALL-UNNAMED \ --add-opens java.desktop/java.awt.font=ALL-UNNAMED \ -jar /opt/app.jar \ --dev.open.mode=true \ --dev.file.mode=true echo "End create container"
浙公网安备 33010602011771号