您的位置:首页 > 房产 > 家装 > b2b2c盈利模式_杭州服务器租用_优化网站服务_谷歌优化技巧

b2b2c盈利模式_杭州服务器租用_优化网站服务_谷歌优化技巧

2024/12/27 4:36:03 来源:https://blog.csdn.net/steamedobun/article/details/144232798  浏览:    关键词:b2b2c盈利模式_杭州服务器租用_优化网站服务_谷歌优化技巧
b2b2c盈利模式_杭州服务器租用_优化网站服务_谷歌优化技巧

目录

一、引言

二、Docker Compose 文件基础

三、针对不同环境的 Docker 编排

开发环境

测试环境

生产环境

四、配置文件全局变量的编写

五、总结


一、引言

在软件开发和部署的过程中,不同的环境有着不同的需求和配置。Docker 作为一种强大的容器化技术,能够帮助我们轻松地创建和管理不同环境下的应用程序。通过合理地编排 Docker 容器,我们可以确保应用在开发、测试和生产环境中的一致性和可靠性。本文将详细介绍如何针对这三种环境进行 Docker 编排,包括 docker-compose 文件的编写以及配置文件全局变量的设置。

二、Docker Compose 文件基础

Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,它使用 YAML 文件来配置应用程序的服务、网络和卷等方面14. 以下是一个基本的 docker-compose.yml 文件结构:

version: '3.3'
services:# 服务1的配置service1:image: image_name:tagcontainer_name: container_nameworking_dir: /path/to/working/dircommand: command_to_runvolumes:- host_path:container_pathenvironment:- VAR1=value1- VAR2=value2ports:- "host_port:container_port"restart: alwaysruntime: nvidia# 服务2的配置service2:# 类似服务1的配置项...

其中:

  • version指定了 Docker Compose 的版本,不同版本可能具有不同的特性和语法14.
  • services下定义了各个服务,每个服务都有自己的配置,如image指定了使用的 Docker 镜像,container_name定义了容器的名称,working_dir设置了容器内的工作目录,command是容器启动时要执行的命令14.
  • volumes用于挂载主机目录到容器内,实现数据的持久化或共享14.
  • environment设置了容器内的环境变量14.
  • ports进行端口映射,将容器内的端口映射到主机的端口上,方便外部访问14.
  • restart定义了容器的重启策略,always表示容器总是在退出后自动重启14.
  • runtime指定了容器运行时的环境,如nvidia表示使用 NVIDIA 的 GPU 运行时环境。

三、针对不同环境的 Docker 编排

开发环境
  • 特点:开发环境主要用于开发者进行代码编写、调试和初步测试。通常需要频繁地修改代码和配置,并且对环境的灵活性要求较高,以便快速迭代和验证新功能3.
  • Docker Compose 编排示例
version: '3.3'
services:hy-asr-dev:image: hy-asr:v1.0container_name: hy-asr-server-devworking_dir: /workspace/hy-asrcommand: python3 hy_asr_main.pyvolumes:- /usr/share/zoneinfo:/usr/share/zoneinfo- /etc/localtime:/etc/timezone:ro-./logs:/workspace/hy-asr/logs-./resources:/workspace/hy-asr/resources-../src:/workspace/hy-asr/src  # 挂载本地代码目录,方便开发时修改代码environment:- TZ=Asia/Shanghai- CUDA_DEVICE_ORDER=PCI_BUS_ID- CUDA_VISIBLE_DEVICES=0  # 可根据开发机器的GPU资源进行调整(不同环境可视GPU不同,以免出现多个环境使用同一GPU出现显存处理不足的问题)
# 以下是配置全局变量,在配置文件中一般使用 ${KAFKA_BROKER_URL:192.168.0.24:9093} 作为全局可变配置参数- SERVER_PORT=- KAFKA_BROKER_URL=- DB_USERNAME=iotmp- DB_PASSWORD=- DB_HOST=- DB_PORT=- MINIO_ENDPOINT=- MINIO_ACCESS_KEY=- MINIO_SECRET_KEY=- MINIO_BUCKET_NAME=- MINIO_SECURE=ports:- "8668:8666"restart: alwaysruntime: nvidia

在开发环境的编排中,我们额外挂载了本地的代码目录../src到容器内的/workspace/hy-asr/src,这样开发者在主机上修改代码后,容器内的代码也会同步更新,无需重新构建镜像。同时,我们可以根据开发机器的实际情况调整 GPU 设备的可见性和端口号等配置。

测试环境
  • 特点:测试环境用于对开发完成的功能进行系统的测试,包括功能测试、性能测试等。测试环境的配置应该尽可能地接近生产环境,以确保测试结果的准确性和可靠性,但也可能需要一些特定的测试工具和配置3.
  • Docker Compose 编排示例
version: '3.3'
services:hy-asr-test:image: hy-asr:v1.0container_name: hy-asr-server-testworking_dir: /workspace/hy-asrcommand: python3 hy_asr_main.pyvolumes:- /usr/share/zoneinfo:/usr/share/zoneinfo- /etc/localtime:/etc/timezone:ro-./logs:/workspace/hy-asr/logs-./resources:/workspace/hy-asr/resourcesenvironment:- TZ=Asia/Shanghai- CUDA_DEVICE_ORDER=PCI_BUS_ID- CUDA_VISIBLE_DEVICES=2- SERVER_PORT=8667- KAFKA_BROKER_URL=- DB_USERNAME=- DB_PASSWORD=- DB_HOST=- DB_PORT=- MINIO_ENDPOINT=- MINIO_ACCESS_KEY=- MINIO_SECRET_KEY=- MINIO_BUCKET_NAME=- MINIO_SECURE=Falseports:- "8667:8666"restart: alwaysruntime: nvidia

与开发环境相比,测试环境的编排可能会使用不同的外部服务地址或测试数据库等配置,以模拟真实的生产环境场景。例如,这里的KAFKA_BROKER_URLDB_HOST等配置与开发环境有所不同,指向了专门为测试环境搭建的服务。

生产环境
  • 特点:生产环境是应用程序最终运行的环境,要求高度的稳定性、可靠性和安全性。配置应该经过严格的测试和验证,并且尽可能地优化性能和资源利用3.
  • Docker Compose 编排示例
version: '3.3'
services:hy-asr-prod:image: hy-asr:v1.0container_name: hy-asr-server-prodworking_dir: /workspace/hy-asrcommand: python3 hy_asr_main.pyvolumes:- /usr/share/zoneinfo:/usr/share/zoneinfo- /etc/localtime:/etc/timezone:ro-./logs:/workspace/hy-asr/logs-./resources:/workspace/hy-asr/resourcesenvironment:- TZ=Asia/Shanghai- CUDA_DEVICE_ORDER=PCI_BUS_ID- CUDA_VISIBLE_DEVICES=3- SERVER_PORT=80- KAFKA_BROKER_URL=prod_kafka.example.com:9092- DB_USERNAME=prod_user- DB_PASSWORD=Prod@Passw0rd- DB_HOST=prod_db.example.com- DB_PORT=3306- MINIO_ENDPOINT=prod_minio.example.com:29000- MINIO_ACCESS_KEY=prod_admin- MINIO_SECRET_KEY=ProdAdmin@123!- MINIO_BUCKET_NAME=dida- MINIO_SECURE=Trueports:- "8669:8666"restart: alwaysruntime: nvidia

在生产环境中,我们使用了正式的域名和生产级别的配置,如prod_kafka.example.comprod_db.example.com等,并且将端口映射到了标准的 HTTP 端口 80。同时,对于敏感信息如数据库密码等,应该使用更严格的安全措施进行管理,这里只是简单示例,实际生产中可能会使用加密存储或从安全的配置中心获取等方式。

四、同时启动docker-compose开发环境、测试环境、生产环境

示例:docker-compose.yml文件内容如下

version: '3.3'
services:# 开发环境服务hy-asr-dev:image: hy-asr:v1.0container_name: hy-asr-server-devworking_dir: /workspace/hy-asrcommand: python3 hy_asr_main.pyvolumes:- /usr/share/zoneinfo:/usr/share/zoneinfo- /etc/localtime:/etc/timezone:ro-./logs:/workspace/hy-asr/logs-./resources:/workspace/hy-asr/resources-../src:/workspace/hy-asr/srcenvironment:- TZ=Asia/Shanghai- CUDA_DEVICE_ORDER=PCI_BUS_ID- CUDA_VISIBLE_DEVICES=0  # 容器可见GPU(假设服务器为多显卡,课件GPU可设置为0, 1, 2, 3)- SERVER_PORT=8667
# 以下是配置全局变量的值,若在项目中配置文件中有使用${... : ...}指定值,会使其替换为这里定义的全局变量值- KAFKA_BROKER_URL=- DB_USERNAME=- DB_PASSWORD=- DB_HOST=- DB_PORT=- MINIO_ENDPOINT=- MINIO_ACCESS_KEY=- MINIO_SECRET_KEY=- MINIO_BUCKET_NAME=- MINIO_SECURE=ports:
# 原需调用的接口为10.0.4.66:8666,映射后调用该开发环境服务接口为10.0.4.66:8667- "8667:8666" # 8667是在容器外的映射端口,8666是容器内项目实际需要调用服务的端口restart: alwaysruntime: nvidia# 测试环境服务hy-asr-test:image: hy-asr:v1.0container_name: hy-asr-server-testworking_dir: /workspace/hy-asrcommand: python3 hy_asr_main.pyvolumes:- /usr/share/zoneinfo:/usr/share/zoneinfo- /etc/localtime:/etc/timezone:ro-./logs:/workspace/hy-asr/logs-./resources:/workspace/hy-asr/resourcesenvironment:- TZ=Asia/Shanghai- CUDA_DEVICE_ORDER=PCI_BUS_ID- CUDA_VISIBLE_DEVICES=2- SERVER_PORT=8668- KAFKA_BROKER_URL=- DB_USERNAME=- DB_PASSWORD=- DB_HOST=- DB_PORT=- MINIO_ENDPOINT=- MINIO_ACCESS_KEY=- MINIO_SECRET_KEY=- MINIO_BUCKET_NAME=- MINIO_SECURE=Falseports:
# 原需调用的接口为10.0.4.66:8666,映射后调用该测试环境服务接口为10.0.4.66:8668- "8668:8666"restart: alwaysruntime: nvidia# 生产环境服务hy-asr-prod:image: hy-asr:v1.0container_name: hy-asr-server-prodworking_dir: /workspace/hy-asrcommand: python3 hy_asr_main.pyvolumes:- /usr/share/zoneinfo:/usr/share/zoneinfo- /etc/localtime:/etc/timezone:ro-./logs:/workspace/hy-asr/logs-./resources:/workspace/hy-asr/resourcesenvironment:- TZ=Asia/Shanghai- CUDA_DEVICE_ORDER=PCI_BUS_ID- CUDA_VISIBLE_DEVICES=3- SERVER_PORT=80- KAFKA_BROKER_URL=- DB_USERNAME=- DB_PASSWORD=- DB_HOST=- DB_PORT=- MINIO_ENDPOINT=- MINIO_ACCESS_KEY=- MINIO_SECRET_KEY=- MINIO_BUCKET_NAME=- MINIO_SECURE=Trueports:
# 原需调用的接口为10.0.4.66:8666,映射后调用该生产环境服务接口为10.0.4.66:8668- "8669:8666"restart: alwaysruntime: nvidia

五、配置文件全局变量的编写

配置文件可变全局变量如何定义?

如下使用 ${KAFKA_BROKER_URL:192.168.0.4:9093} 形式

kafka:broker_url: ${KAFKA_BROKER_URL:192.168.0.4:9093}topic_name: ${KAFKA_TOPIC_NAME:hy-asr-audio}consumer_topic: ${KAFKA_CONSUMER_TOPIC:hy-asr-generate}group_id: ${KAFKA_GROUP_ID:hy-asr}auto_offset_reset: ${KAFKA_AUTO_OFFSET_RESET:earliest}enable_auto_commit: ${KAFKA_ENABLE_AUTO_COMMIT:true} # 是否自动提交偏移量,默认为true

在 Docker Compose 文件中,我们可以使用环境变量来设置配置文件的全局变量,这样可以方便地在不同环境中切换配置,而无需修改 Docker Compose 文件本身。例如,对于KAFKA_BROKER_URL,我们可以这样设置:

environment:- KAFKA_BROKER_URL=${KAFKA_BROKER_URL:192.168.0.4:9093}

这里的 ${KAFKA_BROKER_URL:192.168.0.4:9093} 表示如果环境变量KAFKA_BROKER_URL未设置,则使用默认值192.168.0.4:9093。在实际使用中,我们可以在启动 Docker 容器之前,在主机上设置相应的环境变量,或者在 CI/CD 流程中通过脚本设置环境变量,从而实现不同环境下的配置切换。例如,在开发环境中,也可以在终端中执行 export KAFKA_BROKER_URL=dev_kafka.example.com:9092,然后再运行 docker-compose up,这样容器内的KAFKA_BROKER_URL环境变量就会使用开发环境的配置。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com