已经做好的镜像(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"
   

 

posted on 2026-06-14 02:08  lshan  阅读(1)  评论(0)    收藏  举报