【技术积累】Docker部署笔记
服务器环境搭建
nacos镜像
- 使用宝塔Docker管理器直接拉起nacos环境并运行

注意:在同一台服务器中,nacos只对内网才能注册,图中172.17.0.2是内网地址,在多台服务器中需要跨ip注册服务需要百度自行学习,本次部署使用同一台服务器部署。
启动命令
//加内存限制启动
docker run \
--name nacos -d \
-p 8848:8848 \
--privileged=true \
--restart=always \
-e JVM_XMS=32m \
-e JVM_XMX=128m \
-e JVM_XMN=32m \
-e JVM_MS=32m \
-e JVM_MMS=128m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
nacos/nacos-server:latest
//不加内存限制
docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server
RabbitMQ镜像
- 拉起RabbitMQ镜像并运行
//拉取镜像
docker pull rabbitmq
//部署容器
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
docker exec -it 容器id /bin/bash
输入命令开启可视化
rabbitmq-plugins enable rabbitmq_management
#查看用户列表
rabbitmqctl list_users
#修改密码
rabbitmqctl change_password guest 'Newpassword'
注意:项目部署最好也使用内部ip访问rabbitmq

Redis
- 可以使用宝塔一键集成Redis,也可以Docker搭建环境Redis,
步骤:
docker安装redis:https://blog.csdn.net/weixin_45821811/article/details/116211724
redis外网连接:https://blog.csdn.net/zhoumengshun/article/details/112862448
注意:外网连接需要修改redis连接密码,不然会被攻击
本地配置
利用idea插件连接服务器的docker
注意连接服务器docter必须使用钥密验证,不能直连,服务器会被侵入。

idea连接ca证书步骤:https://blog.csdn.net/qq_41946543/article/details/104159687
可以直接用我的脚本
- 新建文件夹 auto.sh
- 终端命令 sh auto.sh
- 去文件夹/etc/docker
- 导出我们需要的文件ca.pem,cert.pem,key.pem


证书自动脚本,全新可用
# !/bin/bash
# 一键生成TLS和CA证书
# Create : 2023-08-03
# Update : 2023-08-03
# @Autor : madou
# 服务器ip名
SERVER="服务器ip"
# 密码
PASSWORD="密码"
# 国家
COUNTRY="CN"
# 省份
STATE="sc"
# 城市
CITY="cd"
# 机构名称
ORGANIZATION="madou"
# 机构单位
ORGANIZATIONAL_UNIT="madou"
# 邮箱
EMAIL="841838856@qq.com"
echo "生成文件完成"
#切换到生产密钥的目录
cd /etc/docker
# 生成CA密钥
#生成ca私钥(使用aes256加密)
openssl genrsa -aes256 -passout pass:$PASSWORD -out ca-key.pem 4096
#生成ca证书,填写配置信息
openssl req -new -x509 -passin "pass:$PASSWORD" -days 365 -key ca-key.pem -sha256 -out ca.pem -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL"
#生成server证书私钥文件
openssl genrsa -out server-key.pem 4096
#生成server证书请求文件
openssl req -subj "/CN=$SERVER" -sha256 -new -key server-key.pem -out server.csr
sh -c 'echo "subjectAltName = IP:139.155.130.108,IP:0.0.0.0" > extfile.cnf'
sh -c 'echo "extendedKeyUsage=serverAuth " >> extfile.cnf'
#使用CA证书及CA密钥以及上面的server证书请求文件进行签发,生成server自签证书
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out server-cert.pem -extfile extfile.cnf
#生成client证书RSA私钥文件
openssl genrsa -out key.pem 4096
#生成client证书请求文件
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
sh -c 'echo "extendedKeyUsage=clientAuth" > extfile-client.cnf'
#生成client自签证书(根据上面的client私钥文件、client证书请求文件生成)
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out cert.pem -extfile extfile-client.cnf
#更改密钥权限
chmod 0400 ca-key.pem key.pem server-key.pem
#更改密钥权限
chmod 0444 ca.pem server-cert.pem cert.pem
#删除无用文件
rm client.csr server.csr
echo "生成文件完成"
- 记得去docker配置文件修改信息

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
替换
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
- 根据博客流程重启docker
systemctl daemon-reload
systemctl restart docker
service docker restart
- idea连接

连接完成后配置docker插件


配置文件部署环境
建三个配置文件,分别为dev本地环境,prod部署环境,和主环境

开启配置文件环境
- 当本地运行会选择dev,打包部署会选择prod
- 将prod中nacos,redis,rabbitmq,mysql的信息配置正确
//application.yml
spring:
profiles:
active: dev
//application-dev.yml
spring:
config:
activate:
on-profile:
- dev
//application-prod.yml
spring:
config:
activate:
on-profile:
- prod
支付功能配置

- 需要自己去支付宝注册沙盒
- 将ip地址改为项目网关ip
- 本地使用支付需要内网穿透
Dockerfile文件配置
Dockerfile-chart,其它Dockerfile类似,内存太小服务可能会挂掉
FROM openjdk:8
VOLUME /tmp
COPY target/*.jar gebi-text.jar
ENV PORT=9096
ENTRYPOINT ["java","-jar","-Xms64m","-Xmx128m","gebi-text.jar","--spring.profiles.active=prod"]
EXPOSE $PORT
准备启动

启动之后会自动打包部署置服务器上注意打开项目端口

服务器上可以看到

部署成功

前端部署
- 使用宝塔面板部署
- 项目app.ts修改一下ip地址

- 打包直接部署即可
【技术积累】Docker部署笔记的更多相关文章
- docker 部署 笔记
Docker虚拟机常用命令 先更新软件包 yum -y update 安装Docker虚拟机 yum install -y docker 运行.重启.关闭Docker虚拟机 service d ...
- 笔记14:Docker 部署Python项目
Docker 部署Python项目 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如果从一种操作系统里面运行另一种操作系统,通常我们采取 ...
- Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(一)
上一节演示如何安装Docker,链接:Docker学习笔记之-在CentOS中安装Docker 本节演示 将.net core 3.1 部署到docker容器当中,并使用 Nginx反向代理,部署平台 ...
- Docker学习笔记 - Docker容器内部署redis
Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...
- Docker日志管理--docker部署安装ELK (十一)--技术流ken
Docker logs 对于一个运行的容器,Docker 会将日志发送到 容器的 标准输出设备(STDOUT)和标准错误设备(STDERR),STDOUT 和 STDERR 实际上就是容器的控制台终端 ...
- Docker学习笔记三:Docker部署Java web系统
Docker部署Java Web系统 1.在root目录下创建一个路径test/app mkdir test && cd test&& mkdir app && ...
- Docker学习笔记之一,搭建一个JAVA Tomcat运行环境
Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...
- Docker学习笔记 — Docker私有仓库搭建
Docker学习笔记 — Docker私有仓库搭建 目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2 和Mavan的管理一样,Dockers ...
- WSL2+Docker部署RabbitMQ以及在Asp.net core 中使用RabbitMQ示例(1)
本文主要在于最近因疫情不能外出,在家研究的一些技术积累. 主要用到的技术以及知识点: WSL 2 WSL 2+Docker Docker+RabbitMQ 在ASP.NET Core中使用Rabbit ...
- docker学习笔记(3)- 镜像
简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的 ...
随机推荐
- 2022-06-01:给定一个数组arr,可能有正、有负、有0,无序。 只能挑选两个数字,想尽量让两个数字加起来的绝对值尽量小。 返回可能的最小的值。
2022-06-01:给定一个数组arr,可能有正.有负.有0,无序. 只能挑选两个数字,想尽量让两个数字加起来的绝对值尽量小. 返回可能的最小的值. 答案2022-06-01: 排序,双指针. 代码 ...
- 2022-05-02:给定一个数组arr,一个正数num,一个正数k, 可以把arr中的某些数字拿出来组成一组,要求该组中的最大值减去最小值<=num, 且该组数字的个数一定要正好等于k, 每个数字只
2022-05-02:给定一个数组arr,一个正数num,一个正数k, 可以把arr中的某些数字拿出来组成一组,要求该组中的最大值减去最小值<=num, 且该组数字的个数一定要正好等于k, 每个 ...
- 2022-04-05:golang中go.mod文件,做框架开发需要解析,请问如何解析?
2022-04-05:golang中go.mod文件,做框架开发需要解析,请问如何解析? 答案2022-04-05: go.mod解析可参考这个.做框架开发主要是用到require和replace.具 ...
- 2022-01-15:中心对称数 III。 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。 写一个函数来计算范围在 [low, high] 之间中心对称数的个
2022-01-15:中心对称数 III. 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 写一个函数来计算范围在 [low, high] 之间中心对称数的个 ...
- vue全家桶进阶之路21:Vue Loader 打包单位件组件
Vue Loader 是一个 webpack 插件,它允许在单个文件中定义 Vue 组件,并将其包装为 CommonJS 模块,以便在应用程序中使用.使用 Vue Loader 打包的组件被称为单文件 ...
- Linux之从进程角度来理解文件描述符
文件描述符是一个非负整数,而内核需要通过这个文件描述符才可以访问文件.当我们在系统中打开已有的文件或新建文件时,内核每次都会给特定的进程返回一个文件描述符,当进程需要对文件进行读或写操作时,都要依赖这 ...
- 如何通过CAD图中的坐标来确定是哪个坐标系
国内常见的坐标系 坐标系分为以下两种: 地理坐标系(Geographic Coordinate System, GCS) 投影坐标系(Projected Coordinate System, PCS) ...
- tryhackme-Agent Sudo
描述:您在深海下发现了一个秘密服务器.你的任务是侵入服务器内部并揭露真相. 枚举 nmap -sV -T4 -v 10.10.123.164 NSE: Script scanning 10.10.12 ...
- .NET 8 Preview 5发布,了解一下Webcil 是啥
2023年6月13日 .NET 8 Preview 5,.NET 团队在官方博客发布了系列文章: Announcing .NET 8 Preview 5 ASP.NET Core updates in ...
- in用不用索引,啥时候能用啥时候不能用,一文说清
in/or到底能不能用索引应该是肯定的,但有时生效有时不生效,这个能不能量化计算?这是本文想讨论和解答的问题. in到底用不用索引感觉像一桩悬疑片!古早时期的面经,统一说不走索引,在一些程序员脑海中从 ...