Java项目Docker部署

        docker将应用程序与该程序的依赖打包在一个文件里。运行这个文件就会生成一个虚拟容器,就不用担心环境问题,还可以进行版本管理、复制修改等。

docker安装

由于在CentOS下安装docker最常用,所以以Linux环境安装为主

1.安装工具包

缺少依赖无法完成

    $ sudo yum install -y yum-utils

2.设置远程仓库

    $sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.安装

    $ sudo yum install docker-ce

4.启动

    $ sudo systemctl start docker
    或者
    $ sudo service docker start
    service docker start        #启动docker
    chkconfig docker on         #加入开机启动

5.查看版本

    $ sudo docker version

6.相关命令
镜像相关

        docker imager: 列出本地的镜像

        docker pull <image_name>: 从远程仓库拉取镜像到本地。

        docker push <image_name>: 将本地镜像推送到远程仓库。

        docker build -t <image_name> <dockerfile_path>: 基于 Dockerfile 构建镜像。

        docker tag <image_id> <new_image_name>: 为镜像添加标签。

        docker rmi <image_id>: 删除指定的镜像

      容器相关

        docker ps: 列出正在运行的容器。
        docker ps -a: 列出所有容器,包括停止的容器。
        docker run <image_name>: 创建并启动一个容器。
        docker start <container_id>: 启动一个已停止的容器。
        docker stop <container_id>: 停止一个正在运行的容器。
        docker restart <container_id>: 重启一个容器。
        docker rm <container_id>: 删除一个容器。
        docker exec -it <container_id> <command>: 在正在运行的容器中执行命令。
        docker logs <container_id>: 查看容器的日志

docker自定义网络

加入自定义网络中的容器才可以通过容器名相互访问

1.创建网络:网络名称为:lgcgknetwork

 docker network create lgcgknetwork

2.查看网络名称

docker network ls

 3.连接容器到网络

把名为mysql的容器加入到lgcgknetwork网络中:

docker network connect lgcgknetwork mysql

4.断开容器与网络的连接

把名为mysql的容器在lgcgknetwork网络中断开

 docker network disconnect lgcgknetwork mysql

5.删除网络

删除指定网络lgcgknetwork

 docker network rm lgcgknetwork

docker数据卷挂载

数据容器卷:是一种将容器内部目录和本地目录进行挂载的技术,它允许将容器内的数据持久化,并且可以在容器之间共享数据和重用数据

1.创建数据卷

docker volume create myvolume

2.运行容器时挂载数据卷

docker run -d --name mycontainer -v myvolume:/data myimage

解释:

myvolume 是数据卷的名称,/data 是容器内挂载点的路径,myimage 是要运行的 Docker 镜像

3.挂载主机目录到容器

docker run -d --name mycontainer -v /path/on/host:/path/in/container myimage

解释:

挂载一个数据卷。/path/on/host 是宿主机上的路径,/path/in/container 是容器内部的路径。容器启动后,宿主机的 /path/on/host 目录将被挂载到容器的 /path/in/container 目录,容器内对 /path/in/container 的操作会反映到宿主机的 /path/on/host 上。

4.查看数据卷信息

docker volume inspect myvolume

5.删除数据卷

docker volume rm myvolume

6.本地目录挂载

-v ./mysql8/data:/var/lib/mysql

在执行docker run命令时,使用-v 本地目录:容器内目录 可以完成本地目录挂载

本地目录必须以“/”或"./"开头,如果直接以名称开头,会被识别为数据卷而非本地目录

        -v mysql:/var/lib/mysgl 会被识别为一个数据卷叫mysql

        -v ./mysql:/var/lib/mysql会被识别为当前目录下的mysql目录

docker部署mysql

1.拉取mysql镜像

2.运行mysql容器

docker run -d --name mysql8 \

        -p 3306:3306 \

        -e TZ=Asia/Shanghai \

        -e MYSQL_ROOT_PASSWORD=123456 \

        -v ./mysql8/data:/var/lib/mysql \

        -v ./mysql8/conf:/etc/mysql/conf.d \

        -v ./mysql8/init:/docker-entrypoint-initdb.d \

        --network lgcgknetwork \

mysql:8.0

参数的解释:

  1. docker run:Docker 命令,用于创建并启动一个新的容器。

  2. -d:以分离模式运行容器,即在后台运行。

  3. --name mysql8:为容器指定一个名称,这里是 mysql8

  4. -p 3306:3306:将容器的 3306 端口映射到宿主机的 3306 端口。这样,宿主机和其他机器可以通过宿主机的 3306 端口访问容器中的 MySQL 服务。

  5. -e TZ=Asia/Shanghai:设置容器的时区为上海时区。

  6. -e MYSQL_ROOT_PASSWORD=123456:设置 MySQL 的 root 用户的密码为 123456。这个环境变量用于在 MySQL 启动时设置 root 用户的密码。

  7. -v ./mysql8/data:/var/lib/mysql:将宿主机的 ./mysql8/data 目录挂载到容器的 /var/lib/mysql 目录。这样,MySQL 的数据文件就存储在宿主机上,容器重启后数据不会丢失。

  8. -v ./mysql8/conf:/etc/mysql/conf.d:将宿主机的 ./mysql8/conf 目录挂载到容器的 /etc/mysql/conf.d 目录。这样,可以自定义 MySQL 的配置文件。

  9. -v ./mysql8/init:/docker-entrypoint-initdb.d:将宿主机的 ./mysql8/init 目录挂载到容器的 /docker-entrypoint-initdb.d 目录。这个目录用于存放初始化 MySQL 数据库时执行的 SQL 脚本。

  10. --network lgcgknetwork:指定容器连接的 Docker 网络,这里是 lgcgknetwork

  11. mysql:8.0:指定要运行的 Docker 镜像名称,这里是 MySQL 镜像及版本。

docker部署nginx

创建并运行nginx容器

docker run -d --name \

        -p 6001:6001 \

        -v ./nginx/html:/usr/share/nginx/html \

        -v ./nginx/nginx.conf:/etc/nginx/nginx.conf \

        --network lgcgknetwork \

nginx

访问:ip:端口/index.html

docker部署java应用jar包

1.下载Java8镜像容器

docker run -d -it --name java-8 openjdk:8

2.编写Dockerfile文件

FROM openjdk:8

ENV PARAMS=""

ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ADD target/xxl-job-admin-*.jar /xxl-job-admin.jar

ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /xxl-job-admin.jar $PARAMS"]

解释:

# 指定基础镜像为 openjdk:8,这是一个官方提供的带有 Java 8 的 Docker 镜像
FROM openjdk:8

# 设置环境变量 PARAMS,初始为空字符串,可以在构建时通过 --build-arg 参数传递值
ENV PARAMS=""

# 设置时区为 PRC(中国标准时间)
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 将本地的 target 目录下以 xxl-job-admin- 开头的 jar 文件复制到容器中的当前目录,并重命名为 /xxl-job-admin.jar
ADD target/xxl-job-admin-*.jar /xxl-job-admin.jar

# 设置容器启动时执行的命令,使用 java -jar 启动 /xxl-job-admin.jar,并传递环境变量 PARAMS 和 JAVA_OPTS(如果设置了 JAVA_OPTS)
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /xxl-job-admin.jar $PARAMS"]

3.启动

把Dockerfile文件和jar包上传到root目录下:

构建镜像:

docker build -t xxlJobAdmin .

 创建并运行容器

docker run -d --name xxlJobAdmin  -p 6002:6002 --network lgcgknetwork xxlJobAdmin

浏览器访问:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/926942.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构与算法】排序算法(上)——插入排序与选择排序

文章目录 一、常见的排序算法二、插入排序2.1、直接插入排序2.2、希尔排序( 缩小增量排序 ) 三、选择排序3.1、直接选择排序3.2、堆排序3.2.1、堆排序的代码实现 一、常见的排序算法 常见排序算法中有四大排序算法&#xff0c;第一是插入排序&#xff0c;二是选择排序&#xff…

Flink四大基石之Time (时间语义) 的使用详解

目录 一、引言 二、Time 的分类及 EventTime 的重要性 Time 分类详述 EventTime 重要性凸显 三、Watermark 机制详解 核心原理 Watermark能解决什么问题,如何解决的? Watermark图解原理 举例 总结 多并行度的水印触发 Watermark代码演示 需求 代码演示&#xff…

虚拟机docker记录

最近看了一个up的这个视频&#xff0c;感觉docker真的挺不错的&#xff0c;遂也想来搞一下&#xff1a; https://www.bilibili.com/video/BV1QC4y1A7Xi/?spm_id_from333.337.search-card.all.click&vd_sourcef5fd730321bc0e9ca497d98869046942 这里我用的是vmware安装ubu…

[ACTF2020 新生赛]BackupFile--详细解析

信息搜集 让我们寻找源文件&#xff0c;目录扫描&#xff1a; 找到了/index.php.bak文件&#xff0c;也就是index.php的备份文件。 后缀名是.bak的文件是备份文件&#xff0c;是文件格式的扩展名。 我们访问这个路径&#xff0c;就会直接下载该备份文件。 我们把.bak后缀删掉…

AD单通道AD多通道

AD单通道接线图 滑动变阻器的内部结构 左边和右边的两个引脚接的是电阻的两个固定端&#xff0c;中间这个引脚接的是滑动抽头&#xff0c;电位器外边这里有个十字形状的槽可以拧&#xff0c;往左拧&#xff0c;抽头就往左靠&#xff0c;往右拧&#xff0c;抽头就往右靠。所以外…

解决Ubuntu DNS覆盖写入127.0.0.53

ubuntu22.04解析网址时报错如图所示&#xff1a; 因为/etc/resolve.conf中存在 nameserver 127.0.0.53回环地址造成循环引用 原因&#xff1a; ubuntu17.0之后特有&#xff0c;systemd-resolvd服务会一直覆盖 解决方法&#xff1a; 1、修改resolv.config文件中的nameserver…

hint: Updates were rejected because the tip of your current branch is behind!

问题 本地仓库往远段仓库推代码时候提示&#xff1a; error: failed to push some refs to 192.168.2.1:java-base/java-cloud.git hint: Updates were rejected because the tip of your current branch is behind! refs/heads/master:refs/heads/master [rejected] (…

[golang][MAC]Go环境搭建+VsCode配置

一、go环境搭建 1.1 安装SDK 1、下载go官方SDK 官方&#xff1a;go 官方地址 中文&#xff1a;go 中文社区 根据你的设备下载对应的安装包&#xff1a; 2、打开压缩包&#xff0c;根据引导一路下一步安装。 3、检测安装是否完成打开终端&#xff0c;输入&#xff1a; go ve…

关于VNC连接时自动断联的问题

在服务器端打开VNC Server的选项设置对话框&#xff0c;点左边的“Expert”&#xff08;专家&#xff09;&#xff0c;然后找到“IdleTimeout”&#xff0c;将数值设置为0&#xff0c;点OK关闭对话框。搞定。 注意,服务端有两个vnc服务,这俩都要设置ide timeout为0才行 附件是v…

AIGC时代 | 如何从零开始学网页设计及3D编程

文章目录 一、网页设计入门1. 基础知识2. 学习平台与资源3. 示例代码&#xff1a;简单的HTMLCSSJavaScript网页 二、3D编程入门1. 基础知识2. 学习平台与资源3. 示例代码&#xff1a;简单的Unity 3D游戏 《编程真好玩&#xff1a;从零开始学网页设计及3D编程》内容简介作者简介…

virtualbox给Ubuntu22创建共享文件夹

1.在windows上的操作&#xff0c;创建共享文件夹Share 2.Ubuntu22上的操作&#xff0c;创建共享文件夹LinuxShare 3.在virtualbox虚拟机设置里&#xff0c;设置共享文件夹 共享文件夹路径&#xff1a;选择Windows系统中你需要共享的文件夹 共享文件夹名称&#xff1a;挂载至wi…

C#窗体简单登录

创建一个Windows登录程序&#xff0c;创建两个窗体&#xff0c;一个用来登录&#xff0c;一个为欢迎窗体&#xff0c;要求输入用户名和密码&#xff08;以个人的姓名和学号分别作为用户名和密码&#xff09;&#xff0c;点击【登录】按钮登录&#xff0c;登录成功后显示欢迎窗体…

es 3期 第12节-选择合适的数据查询方式

#### 1.Elasticsearch是数据库&#xff0c;不是普通的Java应用程序&#xff0c;传统数据库需要的硬件资源同样需要&#xff0c;提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库&#xff0c;不是关系型数据库&#xff0c;不具备严格的ACID事务特性&#xff…

Educator头歌:离散数学 - 图论

第1关&#xff1a;图的概念 任务描述 本关任务&#xff1a;学习图的基本概念&#xff0c;完成相关练习。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;图的概念。 图的概念 1.一个图G是一个有序三元组G<V,R,ϕ>&#xff0c;其中V是非空顶点集合&am…

day30|leetcode 452. 用最少数量的箭引爆气球, 435. 无重叠区间 , 763.划分字母区间

重叠区间专题 11.用最少的数量引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同…

电脑提示报错“Directx error”怎么解决?是什么原因导致的?游戏软件提示“Directx error”错误的解决方案

DirectX Error&#xff08;DX错误&#xff09;通常指的是在使用基于DirectX技术的应用程序&#xff08;尤其是游戏&#xff09;时遇到的问题。这个问题可能由多种因素导致&#xff0c;以下是一些可能的原因及相应的解决方案&#xff1a; 可能的原因 DirectX版本不匹配&#x…

K8S网络系列--Flannel网络下UDP、VXLAN模式的通信流程机制分析

文章目录 前言一、了解overlay、underlay容器网络二、网络通信1.分类2.网络虚拟设备对2.1、什么是网络虚拟设备对veth pair?2.2、如何查看容器的网卡与主机的哪个veth设备对是成对的关系? 3、vxlan和vtep3.1、vtep3.2、vxlan相关概念 三、Flannel网络模式剖析0、flannel的作用…

【OpenGL学习笔记】图形渲染管线

文章目录 渲染管线简介顶点输入顶点着色器片段着色器着色器程序链接顶点属性 VAO VBO绘制图元元素缓冲对象 EBO 渲染管线简介 在OpenGL中&#xff0c;一切都是3D的&#xff0c;但屏幕或者窗口是一个2D像素阵列&#xff0c;因此OpenGL的大部分工作是将所有3D坐标转换为适合屏幕…

Linux下的三种 IO 复用

目录 一、Select 1、函数 API 2、使用限制 3、使用 Demo 二、Poll 三、epoll 0、 实现原理 1、函数 API 2、简单代码模板 3、LT/ET 使用过程 &#xff08;1&#xff09;LT 水平触发 &#xff08;2&#xff09;ET边沿触发 4、使用 Demo 四、参考链接 一、Select 在…

视觉语言动作模型VLA的持续升级:从π0之参考基线Octo到OpenVLA、TinyVLA、DeeR-VLA、3D-VLA

第一部分 VLA模型π0之参考基线Octo 1.1 Octo的提出背景与其整体架构 1.1.1 Octo的提出背景与相关工作 许多研究使用从机器人收集的大量轨迹数据集来训练策略 从早期使用自主数据收集来扩展策略训练的工作[71,48,41,19-Robonet,27,30]到最近探索将现代基于transformer的策略…