docker 镜像上传下载,及构建java项目镜像心得

docker在服务部署中是比较方便,并且在部署过程中出现问题的几率较低。

本文对基础的docker项目部署做简单介绍

1、安装docker和docker-compose,网上都有自行搜索

2、拉取官方镜像

①、拉官方镜像需要有镜像服务器,没有镜像服务器会报错,好用的镜像服务器都是收费的,不收费的大部分用不了,一般公司都会有自己的私有镜像仓库,可以保存好自己的一些常用的镜像,比如mysql、nginx、mqtt、rabbitmq等。(这里博主是踩过坑的,没有镜像服务器,很操蛋,就是拉不下来

②、拉拉取镜像后加通过docker load -i XXX.tar加载到服务器镜像里。

③、配置Dockerfile如下文件名:Dockerfile

复制代码
# 使用官方的OpenJDK镜像作为基础镜像
FROM jdk:11 (此处可以是本地镜像)

RUN mkdir /xxx    (包的位置)
EXPOSE 13666

# 复制本地的app.jar文件到镜像中的/app目录下
COPY ./xxx.jar(要打入的jar包) /xxx/xxx.jar 复制到镜像目录

# 设置工作目录为/app
WORKDIR /xxx  (工作目录)

# 配置容器启动时运行java命令运行JAR文件
CMD ["java", "-jar", "xxx.jar"]
复制代码

④、配置compose启动文件 文件名:docker-compose.yaml

复制代码
version: "3"

services:
    xxx(工程名称):
        image: xxx:1.3.23 (镜像名称和版本)
        privileged: true
        ports:
            - 13666:13666   (容器内部和外部端口,左边外部,右边内部)
        container_name: xxx  (容器别名)
        #文件挂载地址,尽量不要修改,左侧为宿主机,右侧为容器内部
        volumes:
            - /etc/localtime:/etc/localtime
            - ../jre1.8/:/jre1.8/
            - ./xxx/:/xxx/ (jar包目录)
        restart: always
        env_file:
            - ./xxx.env (外部配置文件)
        networks:
            - sinomis-bridge-network
networks:
  sinomis-bridge-network:
    external:
      name: sinomis-bridge-network
复制代码

⑤、创建xxx目录与compose文件中的jar包目录一致,然后把jar包放入文件夹内,确保文件夹xxx和docker-compose.yaml、Dockerfile在同一目录,注意:如果拉取不到jdk的镜像,用离线的方式拿到jdk的镜像文件加载到docker 里也是可以的。

⑥、使用构建镜像的命令把项目打包进已准备好的jdk镜像中,命令如下;

docker build -t xxx(镜像名称)

⑦、构建完成后就可以启动了,编写自己的env配置文件,项目会优先引用env配置文件中的配置,示例如下:

复制代码
#nacos地址
NACOS_CONFIG_SERVER_ADDR=nacos:8848
#nacos用户名(未开启鉴权时,请不要输入)
NACOS_USERNAME=
#nacos用户名(未开启鉴权时,请不要输入)
NACOS_PASSWORD=
#nacos命名空间
NACOS_CONFIG_NAMESPACE=47dfcc84-3d34-4587-9420-3692a222ea32
#nacos命名空间group
NACOS_CONFIG_GROUP=sinomis
复制代码

⑧、也可以导出为镜像tar包,进行跨服务器部署,到处命令如下:

docker save -o myimage_latest.tar  myimage:latest

命令解释:要导出名为 myimage:latest 的 Docker 镜像到一个名为 myimage_latest.tar 的 tar 文件中

至此,大功告成!

 

posted @   众星捧月  阅读(89)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示