打包和加载镜像
打包
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