准备工作

准备构建好的 jar包

Dockerfile (跟jar包放一个位置)

# 环境变量 容器启动后仍保留
#ENV JAVA_OPTS="-Xms248M  -Xmx512M  -XX:PermSize=248M -XX:MaxPermSize=512M"

# 指定容器运行时的参数,容器启动后就失效了,必须在from之前定义
# ARG JAVA_OPTS="-Xms248M  -Xmx512M  -XX:PermSize=248M -XX:MaxPermSize=512M"

# 以什么镜像为前提 由于是springboot应用所以需要现有java环境
FROM java:8

# 镜像构建时就会执行命令
#RUN ["/bin/bash", "-c", "echo hello"]

#容器启动时运行的命令
# 指定这个容器启动的时候要运行的命令,不可以追加命令
#CMD

#作者
MAINTAINER jan

## 容器的工作地址 相当于cd 
WORKDIR /app/mblog

## 把本地的包添加到工作目录下并改名  还有一个copy原理是一样的
ADD blog-latest.jar app.jar

##  挂载数据卷到宿主机中,容器不存储数据 
## 关于VOLUME如果想了解更深看这个 https://cloud.tencent.com/developer/article/1896358
VOLUME /tmp

LABEL  version="1.0" description="牧码人博客" by="牧码人" 

## 指定容器运行时的user
USER root

## 镜像触发器
## 当所构建的镜像被用做其它镜像的基础镜像,该镜像中的触发器将会被钥触发
## ONBUILD RUN /usr/local/bin/python-build --dir /app/src

## 暴露的端口
EXPOSE 8080

# 指定运行容器启动过程执行命令,覆盖CMD参数
# 指定这个容器启动的时候要运行的命令,可以追加命令(与CMD的区别)
ENTRYPOINT ["java","-jar","/app/mblog/app.jar"]

docker-compose

docker-compose.yml

非必须,由于本人喜欢用docker-compose所以才使用了

Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.
Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用一个YAML文件来配置应用程序的服务。然后,使用一个命令创建并启动配置中的所有服务
说人话:大概就是使用docker-compose可以管理多容器的docker程序,使用一个yaml文件配置下就可以。举个例子:一个简单的java程序需要jdk环境,数据库环境,redis环境。如果不使用docker-compose你就需要多次运行。如果使用docker-compose你只需要在yaml配置好,然后docker-compose up 一下。多个应用便会同时启动。 本篇示例只讲了docker-compose管理单个容器的情况,主要是了解一下yaml的配置。使用yaml配置个人觉得比较优雅,如果不使用它那么你的docker启动命令是这样的 docker run --net=host -p 8269:8080 -v /app/mblog/storage/:/app/mblog/storage/ -d mblog:latest 参数一多这个docker命令便非常长了。

# 版本根据你的docker版本来的,目前主流应该都是3.几的版本
version: '3.8
services:
mblog:
 ## 启动前,先执行build构建镜像
 ## 等同于 docker build -t mblog:latest .
 build:
   context: .
   dockerfile: ./Dockerfile
 # 镜像名
 image: mblog:latest
 # 容器名
 container_name: mblog
 # 自动重启
 restart: always
 #端口映射
 ports:
 - 8269:8080
 # 环境变量  
 environment:
 - spring.profiles.active=mysql
 - JVM_OPTS=-server -Xmx218M -Xms1024M -XX:+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+HeapDumpOnOutOfMemoryError -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Xloggc:/logs/gc.log
 # 目录映射  
 volumes:
 - /app/mblog/storage/:/app/mblog/storage/

启动命令

原生docker方式制作镜像并启动

  • 构建镜像命令:
docker build -t mblog:latest .
  • 启动命令
docker run --net=host -p 8269:8080 -v /app/mblog/storage/:/app/mblog/storage/ -d mblog:latest
  • docker-compose方式启动项目
docker-compose up -d --build

随后docker ps 查看容器是否启动成功即可

最后修改:2022 年 09 月 02 日
如果觉得我的文章对你有用,请随意赞赏