docker+docker-compose+运维账户+部署账户-版本

news/2026/1/20 8:51:35/文章来源:https://www.cnblogs.com/yilangcode/p/19504725

这次部署测试,自己找的是一台腾讯云服务器,几十块一年,信息如下:

image

 

.1.部署准备-

删除所有容器-

 

image

 

删除所有docker镜像-

 

image

 

卸载原有docker版本-

 

 

 

sudo systemctl stop docker

 

sudo systemctl stop docker.socket

 

 

 

sudo yum remove docker-ce docker-ce-cli containerd.io

 

 

 

sudo rm -rf /var/lib/docker

 

sudo rm -rf /var/lib/containerd

image

 

.2.安装依赖组件,配置 docker 官方 yum 源

# 安装依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 配置docker官方yum源(稳定版)

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

 

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

 

查看docker版本和docker compose 版本

image

 

.4.创建个人登陆账号-

登陆root账户,创建运维用户和部署账户。

 

# 创建部署账户(用于运行应用)

sudo useradd -u 10086 -m -s /bin/bash deploy

 

设部署账户空密码:root 下执行 passwd -d deploy

先备份-

 

# 创建运维账户(用于系统管理)

sudo useradd -u 10087 -m -s /bin/bash dengyilang

注意:可以指定UID和GID,避免UID太小,在容器内创建新用户,运行时出现UID不匹配的情况。

sudo passwd dengyilang

密码:xxxxxx

 

image

 

 

.5.添加必要权限

# 格式:用户名  主机=(可切换的用户)  可执行的命令列表

 

# 为部署账户添加sudo权限(仅限必要操作)

echo "deploy ALL=(ALL) NOPASSWD: /usr/bin/docker compose *, /usr/bin/systemctl restart docker" | sudo tee /etc/sudoers.d/deploy

 

echo "dengyilang ALL=(ALL) NOPASSWD: /usr/bin/systemctl *, /usr/bin/docker *, /usr/bin/yum *, /usr/bin/df, /usr/bin/ps" | sudo tee /etc/sudoers.d/dengyilang

 

查看编辑结果-

cat /etc/sudoers.d/deploy

cat /etc/sudoers.d/dengyilang

 

image

 

 

 

设置dengyilang用户可以切换到deploy用户。

 

dengyilang ALL=(deploy)ALL

image

 

.5.将运维账号建议添加到 docker 组

# 将运维账户添加到部署组(便于访问日志)

sudo usermod -aG deploy dengyilang

 

验证组是否添加成功

groups deploy

 

groups dengyilang

image

 

# 添加 deploy 用户到 docker 组

sudo usermod -aG docker deploy

 

设计原因:

部署账户:专门用于运行应用,UID/GID=10086(避免与系统用户冲突)

运维账户:用于系统管理,UID/GID=10087(与部署账户不同,避免权限过度集中)

sudo权限:严格限制,仅允许执行必要的命令

组权限:将运维账户加入部署组,便于查看日志但不拥有应用运行权限

 

.6.使用root用户创建项目目录

 

# 创建应用基础目录

sudo mkdir -p /opt/u01/exam/{nginx,java,mysql,redis}

sudo chown -R deploy:deploy /opt/u01/exam

sudo chmod -R 755 /opt/u01/exam

 

# 为Nginx设置专用目录(使用合理命名)

先创建nginx这个组

sudo groupadd -g 101 nginx

 

sudo mkdir -p /opt/u01/exam/nginx/{html,logs,sslkey,conf.d}

sudo chown -R deploy:nginx /opt/u01/exam/nginx

sudo chmod -R 775 /opt/u01/exam/nginx/logs

 

 

 

image

 

# 为Java应用设置专用目录

sudo mkdir -p /opt/u01/exam/java/{logs,data,conf}

sudo chown -R deploy:deploy /opt/u01/exam/java

sudo chmod -R 755 /opt/u01/exam/java/logs

 

# 为MySQL设置专用目录

# 先创建mysql这个组

sudo groupadd -g 9998 mysql

 

sudo mkdir -p /opt/u01/exam/mysql/{data,logs,conf,init-scripts}

sudo chown -R deploy:mysql /opt/u01/exam/mysql

sudo chmod -R 755 /opt/u01/exam/mysql/logs

image

 

# 为Redis设置专用目录

sudo groupadd -g 9999 redis

sudo mkdir -p /opt/u01/exam/redis/{data,logs}

sudo chown -R deploy:redis /opt/u01/exam/redis

sudo chmod -R 755 /opt/u01/exam/redis/logs

image

 

 

.7.使用运维账户远程登陆,上传文件-

 

遇到问题一:使用dengyilang登陆后,不能上传文件-

image

 

解决办法,需要先给deploy账户设置空密码,

root 下执行 passwd -d deploy

并且设置需要使用dengyilang用户切换到deploy账户即可。

dengyilang ALL=(deploy)ALL

image

 

说明:先使用运维账户将所有部署文件上传到/tmp目录中,

然后在切换到depoly用户,将部署文件复制到指定目录。

 

启动容器报错-

docker compose up -d --build

image

 

将部署账户添加到docker组即可。

# 添加 deploy 用户到 docker 组

sudo usermod -aG docker deploy

 

# 重新登录或重启 shell 生效

 su - deploy

 

image

 

一次启动成功-

 

image

 

访问成功-

 

image

 

其他问题,访问网站时,菜单出现乱码。

排查后发现返回的菜单数据是乱码,初步判断是数据库执行时,插入数据时出现乱码。

 

image

 

 

 

 

由于执行脚本是在docker容器启动mysql的时候执行的,自己猜测大概率是在插入数据的时候出现异常。

去查询数据库时,发现保存的中文数据出现问题-

 

image

 

解决办法-在数据库执行脚本前面添加如下代码即可-

image

 

再次访问,问题解决-

 

image

 感谢千问AI 全程的辅助与支持!IT相关的技术问题,还是千问更专业!点三个赞

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

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

相关文章

杰理之快速拔插SD卡概率出现死机情况【篇】

概率出现host_dev->sem变量在已经被删除的情况下再此被操作。

蓝牙基础(九):详解蓝牙 GAP、SDP、ATT、GATT 的历史背景与设计哲学

liwen01 2026.01.01 前言 我们现在使用的蓝牙,它不是一蹴而就的,它经历了从电缆替代者(经典蓝牙)到 万物互联基石(低功耗蓝牙)的演变。 要理解 SDP、GAP、ATT、GATT 这些类似重叠的协议,需要回到蓝牙技术发展的…

比较好的斑马鱼养殖系统技术厂家2026年最新排名 - 品牌宣传支持者

在科研实验领域,斑马鱼养殖系统的选择直接影响实验数据的准确性和可重复性。本文基于技术实力、市场占有率、用户口碑及售后服务等维度,对国内斑马鱼养殖系统厂家进行客观评估。其中,上海海圣生物实验设备有限公司凭…

2026年天津遗产分割律师联系电话推荐:高效解决遗产纠纷 - 十大品牌推荐

在家庭财富传承的过程中,遗产分割往往是牵动亲情与利益的关键环节,处理不当极易引发长期的家庭纠纷与法律争端。随着《民法典》的深入实施与社会财富结构的日益复杂,天津地区的居民在面临房产、存款、股权等多种形式…

2026年天津遗产继承律师联系电话推荐:津门专家服务汇总 - 十大品牌推荐

在天津这座历史与现代交融的城市,家庭财富的积累与传承日益成为人们关注的焦点。随着《民法典》的深入实施与社会财富结构的变迁,遗产继承所涉及的法律问题也愈发复杂多样,从传统的房产、存款分割,到公司股权、虚拟…

基于Stacking集成学习的数据回归预测(4种基学习器PLS、SVM、决策、KNN,多种元学习器比选)MATLAB代码 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

比较好的精密铝合金压铸加工供应商怎么选?2026年最新排行 - 品牌宣传支持者

在精密铝合金压铸加工领域,选择优质供应商需综合考虑企业规模、技术实力、生产设备、品控体系及市场口碑。其中,佛山市南海区佳伟金属制品有限公司凭借近30年的行业深耕、完善的产业链布局及国际化的客户基础,成为优…

比较好的无损振动盘供应商排行,2026年最新排名 - 品牌宣传支持者

在工业自动化领域,无损振动盘作为精密零件输送的关键设备,其性能直接影响生产线的稳定性和效率。本文基于2026年行业调研数据,从技术实力、产品稳定性、定制化能力、售后服务及市场口碑五个维度,对国内无损振动盘供…

Sdcb Chats 1.8:又一次底层重构,彻底将模型提供商解耦

这是又一篇补档文章,Chats已经发布了1.10,但2025年11月5日发布的1.8版本对我个人来说意义非凡,因为它彻底改变了项目对“模型提供商”的支持方式,从“写死在代码里”变成了“完全配置化”,为后续的可维护性和扩展…

2026年天津遗产继承律所联系电话推荐:守护家庭传承的联系途径 - 十大品牌推荐

随着社会财富的积累与家庭结构的多元化,遗产继承已成为许多天津家庭需要面对的重要议题。无论是房产、存款等资产的分配,还是遗嘱的订立与效力确认,亦或是复杂的家庭纠纷,都需要专业的法律指导与介入。2026年,天津…

比较好的高速震动盘厂家排行,2026年最新排名! - 品牌宣传支持者

在工业自动化领域,高速震动盘作为自动化生产线上的关键供料设备,其性能直接影响生产效率和产品质量。本文基于行业调研、技术实力、客户口碑及市场占有率等维度,对2026年国内高速震动盘厂家进行客观排名。其中,昆山…

2026年天津遗产继承律师联系电话推荐:专业团队与高效服务指南 - 十大品牌推荐

在天津这座融合了传统与现代的城市,家庭财富的积累与传承日益成为人们关注的焦点。随着《民法典》的深入实施与社会财富结构的变迁,遗产继承所涉及的法律问题也愈发复杂多样,从房产、存款到股权、知识产权,从遗嘱的…

2026年天津遗产继承律所联系电话推荐:精选推荐与使用指南 - 十大品牌推荐

随着社会财富的积累和家庭结构的多元化,遗产继承已成为许多天津家庭需要面对的重要议题。无论是提前规划以避免未来纠纷,还是处理已发生的继承争议,寻求专业法律帮助都是保障合法权益、维系家庭和谐的关键一步。然而…

2026年天津子女抚养权律师联系电话推荐:精选推荐与使用指南 - 十大品牌推荐

在家庭结构变化或个人生活规划调整时,子女抚养权的归属问题往往成为当事人最为关切和焦虑的核心。特别是在天津这样的大都市,相关的法律实践既有其普遍性,也带有地方司法特色。进入2026年,随着社会观念的持续演进和…

大模型benchmark

目录大模型推理核心指标及定义表 大模型推理核心指标及定义表评估指标 英文全称 指标定义输出吞吐量 Output Throughput 模型持续生成文本的速度,单位为 tokens/秒(tok/s),反映连续输出场景下的稳定性能峰值吞吐量…

‌AI驱动的慢查询自动化压测:从风险预警到性能闭环的实践体系

性能测试的范式变革‌ 传统性能测试中,慢查询定位常依赖人工日志筛查与经验推测,耗时且易遗漏潜在风险。本文提出一种基于AI监控的慢查询自动触发压测机制,实现从被动响应到主动防御的转型,助力测试团队精准把控数据库性能瓶颈。…

2026年天津婚姻纠纷律所联系电话推荐:专业团队与本土服务 - 十大品牌推荐

当婚姻关系出现裂痕,面临财产分割、子女抚养权归属、情感纠葛等复杂问题时,寻求专业法律帮助是维护自身合法权益、理性解决纠纷的关键一步。天津作为一座注重家庭和谐与生活安稳的城市,其法律服务市场也涌现出众多专…

‌智能生成测试数据的Faker库应用

一、测试数据生成的痛点与破局 在软件测试领域,‌数据驱动测试‌已成为主流实践。传统测试数据制备常面临三大瓶颈: ‌数据敏感性‌:真实用户数据涉及隐私合规风险。‌场景覆盖不足‌:手工造数难以模拟海量边界场景。‌维护成本…