当前位置: 首页 > news >正文

docker一键部署项目

安装docker

1.卸载旧版

首先如果系统中已经存在旧的Docker,则先卸载:

yum remove docker \
yum remove docker-client \
yum remove docker-client-latest \
yum remove docker-common \
yum remove docker-latest \
yum remove docker-latest-logrotate \
yum remove docker-logrotate \
yum remove docker-engine

2.配置Docker的yum库

首先要安装一个yum工具

yum install -y yum-utils

安装成功后,执行命令,配置Docker的yum源:

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

3.安装Docker

最后,执行命令,安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4.启动和校验

# 启动Docker
systemctl start docker# 停止Docker
systemctl stop docker# 重启
systemctl restart docker# 设置开机自启
systemctl enable docker# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

5.配置镜像加速

这里以阿里云镜像加速为例。

5.1.注册阿里云账号

首先访问阿里云网站:
https://www.aliyun.com/
注册一个账号。

5.2.开通镜像服务

在首页的产品中,找到阿里云的容器镜像服务
在这里插入图片描述
点击后进入控制台:
在这里插入图片描述
首次可能需要选择立刻开通,然后进入控制台。

5.3.配置镜像加速

找到镜像工具下的镜像加速器:
在这里插入图片描述
页面向下滚动,即可找到配置的文档说明:
在这里插入图片描述
具体命令如下:

# 创建目录
mkdir -p /etc/docker# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF# 重新加载配置
systemctl daemon-reload# 重启Docker
systemctl restart docker

部署项目前准备

1.在拿到的服务器根目录中创建docker文件夹

1.1在docker文件夹中创建如下文件夹、文件、jar包

在这里插入图片描述

1.2mysql目录:conf放配置文件、data放数据文件、init放初始化文件

在这里插入图片描述

1.3nginx目录:config放配置文件、html放静态资源

在这里插入图片描述

1.4nginx配置文件

在这里插入图片描述

1.5静态资源、前端dist包

在这里插入图片描述

1.5Dockerfile文件(copy后放自己jar包的名字)

# 基础镜像
FROM openjdk:8-jdk-alpine
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY tiot-api.jar /iot.jar
# 入口
ENTRYPOINT ["java", "-jar", "/iot.jar"]

1.6docker-compose.yml文件

version: "3.8"services:# MySQL 服务mysql:image: mysql:5.7container_name: mysqlports:- "6070:3306"  # 映射容器的3306端口到宿主机的6070端口environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: test9988  # MySQL的root用户密码volumes:- "/docker/mysql/conf:/etc/mysql/conf.d"  # MySQL配置文件- "/docker/mysql/data:/var/lib/mysql"  # MySQL数据存储- "/docker/mysql/init/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d"  # MySQL初始化脚本networks:- iot-net  # 使用iot-net网络# Redis 服务redis:image: rediscontainer_name: redisports:- "6071:6379"  # 映射容器的6379端口到宿主机的6071端口volumes:- "/docker/redis/data:/data"  # Redis数据存储networks:- iot-net  # 使用iot-net网络# 自定义的IoT服务iot:build: context: .dockerfile: Dockerfilecontainer_name: iotports:- "6072:6072"  # 映射容器的6072端口到宿主机的6072端口networks:- iot-net  # 使用iot-net网络depends_on:- mysql  # 依赖MySQL服务- redis  # 依赖Redis服务# Nginx 服务nginx:image: nginxcontainer_name: nginxports:- "6073:6073"  # 映射容器的6073端口到宿主机的6073端口- "6074:6074"  # 映射容器的6074端口到宿主机的6074端口volumes:- "/docker/nginx/config/nginx.conf:/etc/nginx/nginx.conf"  # Nginx配置文件- "/docker/nginx/html:/usr/share/nginx/html"  # Nginx静态资源目录depends_on:- iot  # 依赖IoT服务networks:- iot-net  # 使用iot-net网络networks:iot-net:name: iot  # 定义iot-net网络

1.7nginx配置文件示例(指向jar包时url也需填成jar包的服务名称如iot)

worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/json;sendfile        on;keepalive_timeout  65;server {listen 6073;  # 监听端口server_name localhost;  # 设置服务器名称location / {add_header Content-Security-Policy "frame-src 'self' https://yg.szbaohe.cn;";  # 添加 Content-Security-Policy 头信息root /usr/share/nginx/html/qian;  # 设置前端项目所在的根目录
#        try_files $uri $uri/ /index.html;  # 尝试查找静态文件,否则重定向到 index.htmlindex index.html index.htm;  # 设置默认的索引文件}location /prod-api/ {proxy_set_header Host $http_host;  # 设置代理请求的头信息proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://iot:6072/;  # 将请求代理到后端服务的地址}
}server {listen 6074;  # 监听端口server_name localhost;  # 设置服务器名称location / {add_header Content-Security-Policy "frame-src 'self' https://yg.szbaohe.cn;";  # 添加 Content-Security-Policy 头信息root /usr/share/nginx/html/hou;  # 设置前端项目所在的根目录
#        try_files $uri $uri/ /index.html;  # 尝试查找静态文件,否则重定向到 index.htmlindex index.html index.htm;  # 设置默认的索引文件}location /prod-api/ {proxy_set_header Host $http_host;  # 设置代理请求的头信息proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://iot:6072/;  # 将请求代理到后端服务的地址}
}
}

1.8jar包打包时需注意mysql和redis地址写服务名而不是写url地址如下图

在这里插入图片描述
在这里插入图片描述

1.9上述工作准备完成后cd到/docker目录

1.10执行docker compose up -d即可完成一键部署启动docker compose down一键关闭移除

在这里插入图片描述

1.11docker compose logs iot查看具体服务日志,docker ps展示已运行的服务

在这里插入图片描述

1.12若是哪个服务启动异常可使用docker compose logs iot查看具体服务日志,排查问题。

在这里插入图片描述

http://www.dtcms.com/a/589372.html

相关文章:

  • 【Go 与云原生】先从 Go 对与云原生的依赖关系讲起,再讲讲 一个简单的 Go 项目热热身
  • 深圳科技公司排名100搜索引擎优化应注意什么
  • Mac版向日葵command+s保存操作快捷键冲突,打开向日葵设置
  • 解决 地平线4无法连接至地平线生活而无法进行在线游戏 的方法
  • Kafka工作流程及文件存储机制
  • Kafka 消费者
  • RV1126 NO.45:RV1126+OPENCV在视频中添加LOGO图像
  • 在 统一命名空间(UNS)中加入Kafka的方案示例
  • 邯郸网站开发公司电话网站怎么做舆情监测
  • 4.ArrayList 扩容机制与 Fail-Fast 原理
  • 青岛网站域名备案玛酷机器人少儿编程加盟
  • 汽车OTA 测试用例
  • 常州网站建设流程阿里巴巴官网首页登录入口
  • 网站建设流程 知乎网站中文名称注册
  • P7: 《面试准备清单:如何高效覆盖90%的面试考点》
  • 27.短链系统
  • springboot+vue健康食谱交流平台设计(源码+文档+调试+基础修改+答疑)
  • 10.7 密码学中的线性代数
  • 【理论推导】互信息与InfoNCE损失:从公式推导理解对比学习的本质
  • 32HAL——万年历
  • 面向边缘智能的稳健医疗AI:模型性能衰减监控与自适应微调机制深度解析(上)
  • 专业网站发展趋势wordpress html模式
  • 最简单的手机网站制作最常用最齐全wordpress插件大全
  • 【Mybatis笔记】- 1 - MyBatis入门
  • Spring AI Alibaba 提示词入门:从零开始掌握AI对话技巧
  • AI 实战篇:用 LangGraph 串联 RAG+MCP Server,打造能直接操控 Jira 的智能体
  • 爱丽丝的人偶
  • 一个网站里面只放一个图片怎么做的交互式网站有哪些功能
  • 永川区门户网站建设轨迹开发流程管理
  • web中间件——Nginx