Docker服务编排(Docker Compose) :部署上线nginx+springboot项目

news2024/10/7 14:24:30

Docker服务编排(Docker Compose)

  • 微服务应用一般包含若干个微服务每个微服务一般会部署多个实例,如果每个微服务需要手动启停

  • 维护工作量大

  • 从Dockerfile build image 或者去dockerhub拉去image

  • 创建多个容器

  • 管理容器
    在这里插入图片描述

Docker Compose

一个编排多容器分布式部署工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动,停止,使用步骤:

  • Dockerfile定义运行镜像

  • docker-compose.yml定义组成应用各服务

  • 运行docker-compose up 启动

Docker Compose安装使用

安装
[root@server-a ~]# curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

设置文件可执行权限  
 chmod +x /usr/local/bin/docker-compose  


docker-compose -version
docker-compose version 1.22.0, build f46880fe

卸载

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

编排nginx+springboot项目

springboot项目创建

  • 首先创建一个springboot项目,使用IDEA的spring Initializr创建,创建一个Controller
@RestController
public class Controller {
    @RequestMapping("/hello")
    public String hello(){
        return "HELLO DOCKER";
    }
}
  • 启动项目,页面访问

    在这里插入图片描述

  • maven将项目打成jar包

  • 将jar包传入你选择的目录中去

[root@server-a ~]# mkdir docker-files
[root@server-a ~]# cd  docker-files
[root@server-a docker-files]# ls
[root@server-a docker-files]# ll
总用量 17152
-rw-r--r--. 1 root root 17561003 58 04:04 app-0.0.1-SNAPSHOT.jar
  • 定义父镜像 FROM java

  • 定义作者信息 MAINTAINER

  • 将jar包添加到容器 ADD

  • 定义容器启动时命令 CMD

     [root@server-a docker-files]# vim app-dockerfile
    [root@server-a docker-files]# cat app-dockerfile
    FROM java:8
    MAINTAINER rkun18
    ADD app-0.0.1-SNAPSHOT.jar app.jar
    CMD java -jar app.jar
    
docker build -f ./app-dockerfile -t app .

- 查看刚创建app镜像

```bash
     [root@server-a docker-files]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
app          latest    3d2ef669ba18   About a minute ago   661MB
nginx        latest    605c77e624dd   16 months ago        141MB
tomcat       latest    fb5657adc892   16 months ago        680MB
centos       7         eeb6ee3f44bd   19 months ago        204MB
java         latest    d23bdf5b1b1b   6 years ago          643MB
  • 使用镜像创建容器并启动,(注意这里如果容器创建了没启动可能是java版本过低,不适配)

    错误发生,查看容器日志

           docker logs <container_name_or_id>
    
[root@server-a docker-files]# docker run -id -p 9000:8080 --name=c1 app
e7dd2eb736a00a1797e8c494748dbbb9bb68523b5599ba86cea9877c91f479c8
[root@server-a docker-files]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS         PORTS                                       NAMES
e7dd2eb736a0   app       "/bin/sh -c 'java -j…"   6 seconds ago   Up 5 seconds   0.0.0.0:9000->8080/tcp, :::9000->8080/tcp   c1
  • 测试访问宿主机ip:9000/hello

在这里插入图片描述

开始部署

  • 创建docker-compose目录
 [root@server-a ~]# mkdir ~/docker-compose
[root@server-a ~]# cd  ~/docker-compose
  • 编写 docker-compose.yml 文件
version: '3'
services:
  nginx:
   image: nginx
   ports:
    - 80:80
   links:
    - app
   volumes:
    - ./nginx/conf.d:/etc/nginx/conf.d    #宿主机目录:容器目录
  app:
    image: app
    expose:
      - "8080"
  • 创建宿主机挂载目录,写入配置信息
[root@server-a docker-compose]# mkdir -p ./nginx/conf.d
[root@server-a docker-compose]# cd ./nginx/conf.d
[root@server-a conf.d]# vim usr.conf
[root@server-a conf.d]# cat usr.conf
server {
    listen 80;
    access_log off;

    location / {
        proxy_pass http://app:8080
  • 切换目录,启动容器
[root@server-a ~]# cd docker-compose/
[root@server-a docker-compose]# docker-compose up

启动效果

在这里插入图片描述

  • 访问宿主机80端口,查看效果
    在这里插入图片描述

成功访问

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计原则之【接口隔离原则】

文章目录 一、什么是接口隔离原则二、实例三、总结接口隔离原则与单一职责原则的区别 一、什么是接口隔离原则 接口隔离原则&#xff08;Interface Segregation Principle, ISP&#xff09;是指用多个专门的接口&#xff0c;而不使用单一的总接口&#xff0c;客户端不应该依赖…

自学Java多久可以就业?Java这样自学实习都能过万!

昨天有00后学妹私信小源&#xff0c;她在学校已经学过java、C等相关课程&#xff0c;未来想走计算机的方向&#xff0c;问我建议还要学习什么语言&#xff0c;是否需要继续学Java?今天好程序员简单介绍下Java必学的技术&#xff01;想自学Java的真的可以试一试&#xff01; 一…

哈希数据结构的概念、实现和应用

一、认识哈希表 1.unordered_set和unordered_map STL实现了两个数据结构unordered_map和unordered_set顾名思义&#xff0c;因为底层的实现方式不同&#xff0c;它们成为了无序的map和set&#xff0c;但是它们的使用与普通的map和set是一样的。 我们可以通过代码测试两种数据…

【力扣--622】设计循环队列

&#x1f58a;作者 : D. Star. &#x1f4d8;专栏 : 数据结构 &#x1f606;今日分享 : 丢脸其实并没有那么可怕&#xff0c;我们可以从另一个角度来想&#xff1a;别人能够记住我了&#xff0c;而且过了还有多少人能记得我呢&#xff1f;虽然这种出场不太优雅&#x1f606; 设…

python制作散点动图

目录 示例1&#xff1a;简单的散点图示例2&#xff1a;添加颜色和大小示例3&#xff1a;实时更新动图完整代码 本教程将介绍如何使用Python制作散点动图。我们将通过三个示例代码&#xff0c;从易到难&#xff0c;逐步说明如何使用Python绘制出散点动图。 示例1&#xff1a;简单…

图书馆客流人数统计分析系统方案

智慧客流人数统计分析系统可以帮助图书馆管理者更好地管理人群流量。系统能够自动统计区域内的人流量高峰期&#xff0c;并通过数据分析提供更加合理的管控&#xff0c;从而提区域内人群流动性&#xff0c;避免拥堵的情况。 AI客流视觉监控 客流量管控分析系统意义 讯鹏客流量管…

雪花算法生成ID

1.简介 SnowFlake 中文意思为雪花&#xff0c;故称为雪花算法。最早是 Twitter 公司在其内部用于分布式环境下生成唯一 ID。在2014年开源 scala 语言版本。 雪花算法的原理就是生成一个的 64 位比特位的 long 类型的唯一 id。 最高 1 位固定值 0&#xff0c;因为生成的 id 是…

Python的HTTP库及示例

13.3 HTTP库 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;是一个客户端和服务器端请求和应答的标准。客户端是终端用户&#xff0c;服务器端是网站。客户端发起一个到服务器上指定端口的HTTP请求&#xff0c;服务器向客户端发回一个状态行和响应的消息。 可以…

ICV: 2025年全球QKD产业规模有望达到25亿美元

近日&#xff0c;专注于量子、智能驾驶等前沿科技领域的国际咨询机构ICV发布了《全球量子安全通信产业研究报告》&#xff0c;报告主要内容包括量子安全通信的概念、量子密钥分发 (QKD)发展历程、QKD的优势、产业链、应用领域、QKD产业规模及预测、全球主要参与者。 量子安全通…

ubuntu18.04中PCL点云库依赖的安装以及PCL点云库和Eigen的卸载与安装

一、PCL点云库依赖的安装、遇到问题的解决方法 sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl sudo apt-get update sudo apt-get install libpcl-all 以上是官方给出的&#xff0c;但是会出很多报错&#xff0c;这里建议自己配置。 配置步骤&#xff…

【Android学习专题】安卓样式学习(学习内容记录)

学习记录内容来自《Android编程权威指南&#xff08;第三版&#xff09;》 样式调整和添加 调整颜色资源&#xff08;res/values/colors.xml&#xff09; 格式&#xff1a; 添加样式&#xff08;res/values/styles.xml&#xff09;&#xff0c;&#xff08;创建BeatBox项目时…

开源狂潮让巨头惨败!谷歌内部文件曝光:我们和OpenAI都没有护城河

因为开源&#xff0c;AI军备竞赛&#xff0c;谷歌和OpenAI全是输家&#xff1f; 来源丨新智元 重磅&#xff01; 谷歌的一份名为《我们没有护城河&#xff0c;OpenAI也没有》的内部文件疑似被泄露&#xff0c; 今天早上&#xff0c;外媒SemiAnalysis公布了这份重磅炸弹泄露…

日撸 Java 三百行day45

文章目录 说明day45 冒泡排序1. 基本思路2.代码 说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff1a;https://github.com/fulisha-ok/sampledata day45 冒泡排序 …

IP地址技术原理

IP地址用于唯一地标识一个网络设备&#xff08;如计算机、路由器等&#xff09;在互联网或局域网中的位置。IP地址由32位二进制数表示&#xff0c;通常分为4个8位二进制数&#xff0c;每个数用点号隔开&#xff0c;如106.110.92.215。IP地址可用于数据传输、网络管理和安全控制…

Springboot +Flowable,服务任务ServiceTask执行的三种方式(一)

一.简介 ServiceTask 从名字上看就是服务任务&#xff0c;它的图标是像下面这样&#xff0c;截图如下&#xff1a; ServiceTask 一般由系统自动完成&#xff0c;当流程走到这一步的时候&#xff0c;不会自动停下来&#xff0c;而是会去执行我们提前在 ServiceTask 中配置好的…

托福高频真词List06 // 附阅读真题 14:26~15:12 // 15:12~16:12

目录 生词 熟词 阅读真题 生词 inducecausecause the formation of increasestimulate&#xff08;导致&#xff09; v 导致 inevitableunavoidable certainnecessary&#xff08;不可避免地&#xff09; adj 不可避免的accommodateallowv 顺应 modestreasonablesmall modera…

【Git 教程】—git指令详细解析,上机操作,简单易懂

目录 一. 集中式和分布式的区别 1. 集中式版本控制工具 2. 分布式版本控制工具 3. 基本概念 4. 配置信息 二. 创建本地仓库&#xff08;git init) 三.基础指令 1. 获取git版本号 2.查看文件的状态 3. 查看提交记录 4. 版本回退 5. git reflog 6. .gitignore文件…

数据机房温湿度监控系统解决应用案例

机房温湿度监控系统之POE以太网温湿度传感器解决方案 物联网工业级高精度传感器 以太网智能RJ45温湿度传感器&#xff08;POE12VDC供电型&#xff09; 智 能 传 感 器 介 绍 目 录 一、关键词…………………………………………………………………………3 二、 产品概述…

51单片机 | DS18B20 温度传感器实验

系统设计 设计要求 (1) 主体电路包括晶振、复位、电源指示电路&#xff0c;预留程序下载接口&#xff1b; (2) 要求能够实现温度数值的自动显示&#xff0c;值根据实际温度变化自动变化。 (3) 并按照题目要求完成程序源码编写、调试及关键代码注释。 设计任务 使用给定硬件…

C++两个区间的比较?——STL之equal()算法和mismatch()算法

equal&#xff08;&#xff09;算法 检验相等性 bool equal(InputIterator1 beg,InputIterator1 end&#xff0c;InputIterator2 cmpBeg)bool equal(InputIterator1 beg,InputIterator1 end&#xff0c;InputIterator2 cmpBeg,BinaryPredicate op) 第一形式判断区间…