打包和加载镜像

打包

docker save -o <保存路径/文件名.tar> <镜像名:标签>

docker save -o ubuntu_latest.tar ubuntu:latest

加载

docker load -i <镜像文件.tar>

docker load -i ubuntu_latest.tar

打包springboot项目

使用本地jdk

Dockerfile

# 使用基于JDK 8的官方Java镜像作为基础镜像
#FROM openjdk:8-jdk
FROM centos:7
# 将JAR包复制到容器中
COPY / /app/

RUN echo $JAVA_HOME && sleep 5

RUN echo $(java -version) && sleep 5

ENV JAVA_HOME /app/jdk1.8.0_151
ENV PATH ${JAVA_HOME}/bin:$PATH
RUN echo 'after'
RUN echo $JAVA_HOME && sleep 5

RUN  echo $(java -version)  && sleep 5

# 设置工作目录
WORKDIR /app

# 运行JAR包
CMD ["java" , "-jar", "app.jar"]


EXPOSE 8080

打包tomcat项目

使用本地的tomcat和jdk

#FROM openjdk:8-jdk-slim
#FROM openjdk:8-jdk
FROM centos:7
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH

COPY tomcat $CATALINA_HOME
COPY jdk /app/jdk
COPY code /app/code
EXPOSE 7070
CMD ["catalina.sh", "run"]

打包公司的项目

使用java启动脚本启动

Dockerfile

FROM centos:7

RUN sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-Base.repo && \
    sed -i 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-Base.repo

RUN yum -y install telnet iputils traceroute  && \
    yum clean all

#设置支持中文
ENV LANG zh_CN.GBK
RUN localedef -i zh_CN -f GBK zh_CN.GBK

# 将JAR包复制到容器中
COPY / /app

RUN rm -f /app/Dockerfile
# 设置Java环境变量
ENV JAVA_HOME /app/jdk
ENV PATH ${JAVA_HOME}/bin:$PATH
# 设置工作目录
WORKDIR /app/bin
VOLUME /app/logs
VOLUME /app/conf

# 确保run.sh可执行
RUN chmod +x /app/bin/run.sh

# 运行程序i
CMD ["sh", "-c", "/app/bin/run.sh run && tail -f /dev/null"]

 tail -f /dev/null目的是为了不让执行完脚本容器退出

工作目录之所以是/app/bin,是因为代码中通过当前执行脚本的目录去获取配置

启动脚本

#!/bin/bash
LANG=zh_CN.gbk
export LANG
for i in /app/lib/*
do
  case "$i" in
     *.jar) export CLASSPATH=$CLASSPATH:$i ;;
  esac
done
echo $CLASSPATH
nohup java -Xss1024k -Xms200m -Xmx200m -DappName=EServer4H com.linkage.litms.eserver.Application EServer4H &
echo 'esb start'

在镜像中执行cron任务

Dockerfile


FROM centos:7
# 将JAR包复制到容器中
COPY / /app/

#加速yum下载
RUN sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-Base.repo && \
    sed -i 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-Base.repo
#安装指定的工具
RUN yum -y install cronie && \
       yum clean all


RUN mv /app/mycron /etc/cron.d

RUN chmod +x /app/cyz.sh /app/test.sh

ENV JAVA_HOME /app/jdk1.8.0_151
ENV PATH ${JAVA_HOME}/bin:$PATH
# 设置工作目录
WORKDIR /app
# 运行JAR包
#CMD ["java" , "-jar", "app.jar","&& crond start"]
CMD ["sh", "-c", "/usr/sbin/crond -n & java -jar app.jar"]
EXPOSE 8080

 

安装指定工具

基础镜像

FROM centos:7
#加速yum下载
RUN sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-Base.repo && \
    sed -i 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-Base.repo
#安装指定的工具
RUN yum -y install telnet iputils traceroute && \
    yum clean all

容器启动后不退出

 #tail -f /dev/null目的是为了不让执行完脚本容器退出


# 运行程序i
CMD ["sh", "-c", "/app/bin/run.sh run && tail -f /dev/null"]

设置支持中文

在DockerFile中添加

如果是GBK就使用如下


#设置支持中文
ENV LANG zh_CN.GBK
RUN localedef -i zh_CN -f GBK zh_CN.GBK

如果是utf8就使用如下

# 设置支持中文
ENV LANG zh_CN.UTF-8
RUN localedef -i zh_CN -f UTF-8 zh_CN.UTF-8

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐