搭建复现环境

news2025/7/19 6:11:01

 初始准备:安装配置搬运工

1,安装配置搬运工 这个流行的容器化工具。步骤如下:

更新软件源

apt-get update

​编辑

安装搬运工

apt-get install 搬运工.io

​编辑

2,修改搬运工的配置文件,添加内容

sudo systemctl daemon-reload

sudo systemctl restart 搬运工

重启搬运工服务使配置生效

​编辑

查看运行状态可以看到配置生效

sudo systemctl status 搬运工

​编辑

3,为了方便管理,可以按照配置搬运工 compose

​编辑

添加可执行权限

sudo chmod +x /usr/local/bin/搬运工-compose

测试安装结果

搬运工-compose --version

​编辑

搬运工 Compose 是什么?

1. 核心定义

搬运工 Compose 是 搬运工 官方提供的容器编排工具,用于简化多容器应用的部署与管理。它允许通过一个 YAML 配置文件(搬运工-compose.yml)定义复杂的应用服务、网络、存储卷等资源,并通过单一命令完成所有服务的启动、停止和重建。

详细配置解析(以 LAMP 环境为例)

1. 多服务定义

yaml

复制

2. 网络配置

默认情况下,Compose 会为项目创建一个独立网络,服务间可通过服务名通信:

yaml

复制

# PHP代码中连接MySQL的配置
$dbHost = 'db';  # 直接使用服务名

3. 环境变量管理

  • 直接定义
    yaml
    复制
    environment:
      MYSQL_USER: admin
  • 从 .env 文件读取
    bash
    复制
    # .env 文件
    DB_PASSWORD=secret
    yaml
    复制
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}

4. 健康检查(高级)

确保服务完全就绪后再启动依赖项:

yaml

复制

services:
  db:
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 5s
      timeout: 3s
      retries: 5

六、实际应用场景与示例

场景1:快速启动 WordPress

yaml

复制

场景2:多环境配置

  • 开发环境 (搬运工-compose.dev.yml):
    yaml
    复制
    services:
      web:
        volumes:
          - ./src:/app  # 实时同步代码
        ports:
          - "3000:3000"
  • 生产环境 (搬运工-compose.prod.yml):
    yaml
    复制
    services:
      web:
        restart: always
        ports:
          - "80:3000"

启动命令:

# 开发环境
搬运工-compose -f 搬运工-compose.yml -f 搬运工-compose.dev.yml up

# 生产环境
搬运工-compose -f 搬运工-compose.yml -f 搬运工-compose.prod.yml up -d

七、常见问题与解决

1. 服务启动顺序问题

  • 问题:Web 服务在数据库未就绪时尝试连接,导致失败。
  • 解决:使用 depends_on + healthcheck 确保依赖服务健康后再启动。

2. 端口冲突

  • 问题:Error: Port is already allocated。
  • 解决:修改 ports 配置或停止占用端口的进程。

3. 文件权限问题

  • 问题:容器内应用无法写入挂载的目录。
  • 解决:在 搬运工file 或启动脚本中设置目录权限:
    搬运工file
    复制
    RUN chown -R www-data:www-data /var/www/html

八、最佳实践

  1. 版本控制:将 搬运工-compose.yml 和 .env 文件纳入 Git 仓库,但排除敏感数据(如密码)。
  2. 最小化镜像:使用 Alpine 等轻量级基础镜像减少资源占用。
  3. 日志管理:配置日志驱动避免容器日志占用过多磁盘空间:
    yaml
    复制
  4. 安全加固:避免在配置中硬编码密码,使用 搬运工 Secrets 或环境变量文件。

九、总结

搬运工 Compose 是现代化开发和部署的利器,通过声明式配置实现基础设施即代码。无论是单服务调试还是复杂微服务架构,Compose 都能显著提升效率。掌握其核心配置和命令后,您可以轻松管理多容器应用,实现开发与生产环境的高度一致性。

搬运工搭建LAMP环境

1,拉取LAMP的搬运工镜像:

搬运工 pull linode/lamp

​编辑

2,通过该镜像启动一个服务

搬运工 run -it -p 8001:80 linode/lamp /bin/bash

  1. 命令结构解析
  • 搬运工 run:创建并启动一个新容器。
  • -it:组合参数,-i保持标准输入打开,-t分配伪终端,允许用户与容器交互。
  • -p 8001:80:将主机的8001端口映射到容器的80端口,使外部可通过主机的8001端口访问容器内的Web服务(如Apache)。
  • linode/lamp:使用的搬运工镜像,提供预配置的LAMP(Linux + Apache + MySQL + PHP)环境。
  • /bin/bash:在容器内启动Bash shell,进入交互式命令行界面。
  1. 核心作用
  • 启动一个可交互的LAMP容器,用户可通过Bash直接操作容器内部(如调试、修改配置)。
  • 通过端口映射,允许通过主机8001端口访问容器内的Web服务(假设Apache已启动并监听80端口)。
  1. 潜在问题与注意事项
  • 服务未自动启动:若镜像默认通过CMD/ENTRYPOINT启动服务(如Apache/MySQL),覆盖为/bin/bash可能导致服务未运行。
  • 容器生命周期:退出Bash(输入exit)会导致容器停止,若需后台运行,可在启动时添加-d选项,并使用搬运工 exec -it <容器ID> /bin/bash进入容器。
  • 数据持久化:容器内修改(如网站文件、数据库)默认随容器删除而丢失,需通过-v挂载卷实现持久化。

需手动启动服务
service apache2 start 
service mysql start  

​编辑

验证实验效果,访问192.168.23.154:8001

​编辑

进入容器的bash进行管理

搬运工 exec -it <容器ID> /bin/bash

搬运工 compose搭建wordpress

编写一个yaml文件

vim wordpress.yml然后再启动我们的实验环境,即

搬运工-compose -f wordpress.yml up -d

搭建成功,但是不知为何无法连接到数据库

 

 

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

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

相关文章

【SpringCloud】Nacos健康检查

5.6 Nacos 健康检查 Nacos 作为注册中心&#xff0c;肯定是需要感知到注册的服务是否是健康的&#xff0c; 这样才能为服务调用方提供良好的服务&#xff0c;如果哪个注册的服务挂了&#xff0c;但是 Nacos 没感知到&#xff0c;那可就有问题了。 5.6.1 健康检查机制 Nacos …

随机产生4位随机码(java)

Random类&#xff1a; 用于生成随机数 import java.util.Random; 导入必要的类 generateVerificationCode()方法&#xff1a; 这是一个静态方法&#xff0c;可以直接通过类名调用 返回一个6位数字的字符串&#xff0c;首位不为0 生成首位数字&#xff1a; random.nextInt…

电源测试系统自动化转型:Chroma 8000 与 NSAT-8000 核心功能对比解析

在全球制造业加速智能化升级的背景下&#xff0c;电源模块测试正从传统手动模式向自动化、智能化深度转型。作为企业降本增效与提升竞争力的关键&#xff0c;如何选择适配的测试系统成为行业焦点。本文聚焦市场主流的 Chroma 8000 与 NSAT-8000 两款系统&#xff0c;从功能设计…

一个极简的反向传播实现

代码&#xff1a; GitCode - 全球开发者的开源社区,开源代码托管平台 这是2022年&#xff0c;北方交通大学的同志实现的。 包含机器学习的所有过程。前向&#xff0c;反向&#xff0c;损失函数&#xff0c;detect&#xff0c;然后数据集使用了sklearn.datasets的make_moons()…

【小沐学Web3D】three.js 加载三维模型(React Three Fiber)

文章目录 1、简介1.1 Three.js1.2 React Three Fiber 2、测试2.1 初始化环境2.2 app.js修改&#xff08;显示内置立方体&#xff09;2.3 app.js修改&#xff08;显示内置球体&#xff09;2.4 app.js修改&#xff08;显示自定义立方体&#xff09;2.5 app.js修改&#xff08;显示…

sqlalchemy查询json

第一种&#xff1a;字段op是json格式&#xff1a; {"uid": "cxb123456789","role": 2,"op_start_time": 1743513707504,"op_end_time": 1743513707504,"op_start_id": "op_001","op_end_id"…

物联网外设管理服务平台

1 开发目标 1.1 架构图 操作系统&#xff1a;基于Linux5.10.10源码和STM32MP157开发板&#xff0c;完成tf-a(FSBL)、u-boot(SSBL)、uImage、dtbs的裁剪&#xff1b; 驱动层&#xff1a;为每个外设配置DTS并且单独封装外设驱动模块。其中电压ADC测试&#xff0c;采用linux内核…

1.ElasticSearch-入门基础操作

一、介绍 The Elastic Stack 包含ElasticSearch、Kibana、Beats、LogStash 这就是所说的ELK 能够安全可靠地获取任何来源、任何格式的数据&#xff0c;然后实时地对数据进行搜索、分析和可视化。Elaticsearch,简称为ES&#xff0c;ES是一个开源的高扩展的分布式全文搜索引擎,是…

uniapp加载json动画

一、添加canvas画布 <canvas id"lottie_demo" type"2d" style"display: inline-block;width: 148rpx; height: 148rpx;" /> 二、引入依赖和JSON文件 安装依赖 npm install lottie-miniprogram --save import lottie from lottie-mini…

图论:最小生成树

最小生成树 &#xff08;无向无环图&#xff09; 概念 1.Prim算法 P3366 【模板】最小生成树 - 洛谷 邻接矩阵实现 #include<iostream> #include<cstring> using namespace std; const int INF 0x3f3f3f3f; const int N 5e3 10; int dis[N]; //记录每个结点到…

rqlite:一个基于SQLite构建的分布式数据库

今天给大家介绍一个基于 SQLite 构建的轻量级分布式关系型数据库&#xff1a;rqlite。 rqlite 基于 Raft 协议&#xff0c;结合了 SQLite 的简洁性以及高可用分布式系统的稳健性&#xff0c;对开发者友好&#xff0c;操作极其简便&#xff0c;其核心设计理念是以最低的复杂度实…

Dynamics 365 Business Central Recurring Sales Lines 经常购买销售行 来作 订阅

#D365 BC ERP# #Navision# 前面有节文章专门介绍了BC 2024 Wave 2 支持的更好的Substription & Recurring Billing。 其实在D365 BC ERP中一直有一个比较简单的订阅模块Recrring Sales Lines。本文将介绍一下如何用Recurring Sales Lines来 实施简易的订阅Substription。具…

探索生成式AI在游戏开发中的应用——3D角色生成式 AI 实现

概述 自从开创性论文 Denoising Diffusion Probabilistic Models 发布以来&#xff0c;此类图像生成器一直在改进&#xff0c;生成的图像质量在多个指标上都击败了 GAN&#xff0c;并且与真实图像无法区分。 NeRF: Representing Scenes as Neural Radiance Fields for View S…

K8s 老鸟的配置管理避雷手册

Yining, China 引言 对于这种案例&#xff0c;你们的处理思路是怎么样的呢&#xff0c;是否真正的处理过&#xff0c;如果遇到&#xff0c;你们应该怎么处理。 最后有相关的学习群&#xff0c;有兴趣可以加入。 开始 一、血泪教训&#xff1a;环境变量引发的真实灾难 1.1 …

3-Visual Studio 2022打包NET开发项目为安装包

引言 本文将上一期博文>>>门店管理系统开发<<<开发的项目打包为Windows安装包 一&#xff0c;安装扩展 安装此扩展&#xff1a;installer Projects 二&#xff0c;创建安装程序项目 创建项目 右键解决方案-添加-新建项目 选择setup Project项目 填写项目名…

国内外网络安全政策动态(2025年3月)

▶︎ 1.《关于进一步加强智能网联汽车产品准入、召回及软件在线升级管理的通知》发布 3月1日&#xff0c;工业和信息化部、市场监管总局联合发布《关于进一步加强智能网联汽车产品准入、召回及软件在线升级管理的通知》&#xff08;以下简称《通知》&#xff09;。 该通知旨在…

已知Word内容格式固定,通过宏实现Word转Excel

文章目录 需求描述一、宏是什么&#xff1f;二、使用步骤1.启用开发工具2.VBA基础知识3.单个Word文件转为Excel4.批量将Word文件转为Excel文件 总结 需求描述 现在有多个Word文档&#xff0c;Word文档格式固定&#xff0c;假如Word内容分为单选题和多选题&#xff0c;每个题目…

SpringDoc【使用详解】

SpringDoc使用详解 一、何为SpringDoc二、概念解释三、SpringDoc使用2.1简单集成2.2 配置SpringDoc2.2.1 yml方式配置2.2.2配置文档信息 2.3配置文档分组2.4使用注解2.4.1 Tag2.4.2 Operation2.4.3 Schema2.4.4 NotNull2.4.5 Parameter2.4.6 Parameters2.4.7 ApiResponses 和Ap…

Redis持久化 | RDB AOF | 常见问题

目录 RDB&#xff08;Redis DataBase&#xff09; 给什么内存数据做快照——&#xff08;全量&#xff09; 触发机制 RDB文件生成的时候会阻塞主线程吗&#xff1f; 关闭持久化命令 bgsave执行流程 RDB文件怎么配置&#xff1f;有哪些优缺点 优点&#xff1a; 缺点&am…