# 进入后端目录
cd /home/docker/${项目名称}/server
#创建 Dockerfile 用于创建自定义镜像
vim Dockerfile
# 文件内容==========开始==========================
#java8环境
FROM java8
#暴露端口
EXPOSE 8888
#项目JAR包复制到镜像内(-v映射到外部则不需要)
#COPY ./devel-server-start-1.0.0.jar /tmp/app.jar
#COPY ./application.yml /tmp/application.yml
#ENTRYPOINT java -jar /tmp/app.jar
#映射方法(启动后执行,第4项参数是加载外部配置文件,其中spring.config.location会直接替换内部配置即jar包内部配置失效;spring.config.additional-location与内部互补且优先级最高)
ENTRYPOINT ["java","-jar","/tmp/devel-server-start-1.0.0.jar","--spring.config.additional-location=/data/java/config/application-normal.yml"]
# 文件内容==========结束==========================
# 将项目加载到docker 中
#首先编译
# 将项目生成镜像加入到docker 中
docker build -t ${镜像名称} .
# 运行项目 -v映射jar包目录/配置文件目录/附件上传目录,项目修改直接替换宿主机目录中的文件即可
docker run -d -p xxxx(容器端口):xxxx --name ${容器名称} -v /usr/local/laomo/server:/tmp -v /usr/local/laomo/server/config:/data/java/config -v /usr/local/laomo/fileUpload:/usr/local/laomo/fileUpload ${镜像名称}
-----------------------------
容器启动可能会报错library initialization failed - unable to allocate file descriptor table - out of memory
是由于docker 容器的ulimit 太小
这个值可能与OS版本,Docker版本及配置方法相关
openEuler系统修改方法
修改/etc/systemd/system/docker.service配置文件参数LimitNOFILE和LimitNPROC为适当大小:
[Service]
LimitNOFILE=102400
LimitNPROC=102400
LimitCORE=infinity