2026/4/9 17:26:11
网站建设
项目流程
个人网站建设收费标准,网站建设预算计算方法,顺义手机网站设计,网站策划书的撰写流程1. 前言
在现代软件开发和部署中#xff0c;Docker已成为不可或缺的工具。它提供了轻量级、可移植的容器化解决方案#xff0c;使应用部署变得简单高效。本文将详细介绍如何使用Docker一键部署四个常用服务#xff1a;RustFS#xff08;高性能文件存储#xff09;、GoFas…1. 前言在现代软件开发和部署中Docker已成为不可或缺的工具。它提供了轻量级、可移植的容器化解决方案使应用部署变得简单高效。本文将详细介绍如何使用Docker一键部署四个常用服务RustFS高性能文件存储、GoFastDFS分布式文件系统、Gitea自托管Git服务和PostgreSQL关系型数据库。无论你是个人开发者还是团队负责人这些服务都能为你的项目提供强大支持。2. 前提条件已安装Docker版本20.10已安装Docker Compose版本1.2964位操作系统Windows/Linux/Mac至少4GB可用内存3. RustFS部署RustFS是一款使用Rust语言编写的高性能文件存储系统支持S3协议适用于私有云存储场景。3.1 Docker命令部署Linux: docker run -d \ --name rustfs_container \ --user root \ -p 9000:9000 \ -p 9001:9001 \ -v D:/ProgramData/docker/rustfs/data:/data:z \ -e RUSTFS_ACCESS_KEYrustfsadmin \ -e RUSTFS_SECRET_KEYrustfsadmin \ -e RUSTFS_CONSOLE_ENABLEtrue \ rustfs/rustfs:latest \ --address 0.0.0.0:9000 \ --console-enable \ --console-address 0.0.0.0:9001 \ --access-key rustfsadmin \ --secret-key rustfsadmin Windows: docker run -d --name rustfs_container --user root -p 9000:9000 -p 9001:9001 -v D:/ProgramData/docker/rustfs/data:/data:z -e RUSTFS_ACCESS_KEYrustfsadmin -e RUSTFS_SECRET_KEYrustfsadmin -e RUSTFS_CONSOLE_ENABLEtrue rustfs/rustfs:latest --address 0.0.0.0:9000 --console-enable --console-address 0.0.0.0:9001 --access-key rustfsadmin --secret-key rustfsadmin 界面http://localhost:9001/rustfs/console/browser参数说明--user root: 以root用户运行容器-p 9000:9000: 映射API端口-p 9001:9001: 映射控制台端口-v: 挂载数据卷RUSTFS_ACCESS_KEY和RUSTFS_SECRET_KEY: 访问凭证--console-enable: 启用Web控制台3.2 Docker Compose部署推荐创建docker-compose.yml文件version: 3.8 services: rustfs: image: rustfs/rustfs:latest container_name: rustfs_container user: root ports: - 9000:9000 - 9001:9001 volumes: - D:/ProgramData/docker/rustfs/data:/data:z environment: - RUSTFS_ACCESS_KEYrustfsadmin - RUSTFS_SECRET_KEYrustfsadmin - RUSTFS_CONSOLE_ENABLEtrue command: --address 0.0.0.0:9000 --console-enable --console-address 0.0.0.0:9001 --access-key rustfsadmin --secret-key rustfsadmin restart: unless-stopped启动服务docker-compose up -d访问控制台http://localhost:9001/rustfs/console/browser默认登录凭证用户名/密码均为rustfsadmin4. GoFastDFS部署GoFastDFS是一个基于Golang实现的高性能分布式文件系统适合大文件存储。4.1 下载配置文件GoFastDFS东西有点多无法把内容全部写上请从网盘下载Docker的安装部分docker-compose.yml#version: 3.4 services: fastdfs1: # build: # context: . # dockerfile: Dockerfile image: sjqzhang/go-fastdfs:latest #docker pull sjqzhang/go-fastdfs container_name: fastdfs1 privileged: true restart: always #networks: # - extnetwork volumes: - type: bind source: ./fastdfs/data1 target: /usr/local/go-fastdfs/data ports: - 9527:8080 fastdfs2: # build: # context: . # dockerfile: Dockerfile image: sjqzhang/go-fastdfs:latest #docker pull sjqzhang/go-fastdfs container_name: fastdfs2 privileged: true restart: always #networks: # - extnetwork volumes: - type: bind source: ./fastdfs/data2 target: /usr/local/go-fastdfs/data ports: - 9526:8080 nginx: image: nginx:latest container_name: fileserver-nginx privileged: true restart: always #networks: # - extnetwork ports: - 9528:80 volumes: - type: bind source: ./nginx/nginx.conf target: /etc/nginx/nginx.conf - type: bind source: ./nginx/static target: /usr/share/nginx/html - type: bind source: ./nginx/log target: /var/log/nginx fastdfs-web: build: context: ./fastdfs-web dockerfile: Dockerfile image: fastdfs-web:latest #docker pull sjqzhang/go-fastdfs container_name: fastdfs-web volumes: - type: bind source: ./fastdfs-web/db/go-fastdfs.db target: /db/go-fastdfs.db - type: bind source: ./fastdfs-web/logs target: /logs privileged: true restart: always #networks: # extnetwork: # ipv4_address: 172.19.0.20 ports: - 8099:8088 links: - fastdfs1 - fastdfs2 depends_on: - fastdfs1 - fastdfs2 networks: extnetwork: driver: bridge ipam: config: - subnet: 172.19.0.0/164.2 启动服务docker-compose up -d访问Web界面http://localhost:8099初次访问会要求设置管理员密码请妥善保存。5. Gitea部署Gitea是一个轻量级的自托管Git服务适合团队代码管理和协作。5.1 创建Docker Compose文件创建gitea-compose.yml文件version: 3 services: gitea: image: gitea/gitea:latest container_name: gitea restart: always environment: - USER_UID1000 - USER_GID1000 - TZAsia/Shanghai ports: - 3000:3000 # HTTP - 222:22 # SSH避免与主机22端口冲突 volumes: - D:/ProgramData/docker/gitea/gitea:/data - D:/ProgramData/docker/gitea/etc/timezone:/etc/timezone:ro - D:/ProgramData/docker/gitea/etc/localtime:/etc/localtime:ro6. PostgreSQL部署PostgreSQL是一个强大的开源对象关系数据库系统。6.1 创建Docker Compose文件创建postgres-compose.yml文件version: 3.8 services: postgres: image: postgres:latest container_name: postgres_container environment: - POSTGRES_USERpostgres - POSTGRES_PASSWORDpostgres_password - POSTGRES_DBpostgres volumes: - D:/ProgramData/docker/postgres/data:/var/lib/postgresql/data ports: - 5432:5432 restart: unless-stoppedDockerfie# 使用明确的 PostgreSQL 版本推荐 FROM postgres:17 # 设置环境变量 ENV POSTGRES_USERpostgres ENV POSTGRES_PASSWORDpostgres ENV POSTGRES_DBpostgres # 安装编译依赖 PostgreSQL 开发包 RUN apt-get update \ apt-get install -y \ build-essential \ git \ cmake \ libssl-dev \ libpq-dev \ zlib1g-dev \ postgresql-server-dev-17 \ rm -rf /var/lib/apt/lists/* # 克隆并编译 pgvector RUN git clone --branch v0.8.1 https://github.com/pgvector/pgvector.git /pgvector \ cd /pgvector \ make \ make install # 可选清理源码减小镜像体积 RUN rm -rf /pgvector # 复制初始化脚本如果需要自动启用 extension COPY init.sql /docker-entrypoint-initdb.d/init.sql-- 启用 vector 扩展 CREATE EXTENSION IF NOT EXISTS vector; -- 创建一个示例表 CREATE TABLE example ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, embedding VECTOR(3) -- 假设嵌入维度为3 ); -- 插入一些示例数据 INSERT INTO example (name, embedding) VALUES (Alice, [1.0, 2.0, 3.0]), (Bob, [4.0, 5.0, 6.0]);7. 一体化部署方案将所有服务整合到一个docker-compose.yml文件中version: 3.8 services: rustfs: image: rustfs/rustfs:latest container_name: rustfs_container user: root ports: - 9000:9000 - 9001:9001 volumes: - D:/ProgramData/docker/rustfs/data:/data:z environment: - RUSTFS_ACCESS_KEYrustfsadmin - RUSTFS_SECRET_KEYrustfsadmin - RUSTFS_CONSOLE_ENABLEtrue command: --address 0.0.0.0:9000 --console-enable --console-address 0.0.0.0:9001 --access-key rustfsadmin --secret-key rustfsadmin restart: unless-stopped gofastdfs: image: sjq0/rush:latest container_name: gofastdfs_container ports: - 8080:8080 volumes: - D:/ProgramData/docker/gofastdfs/data:/data:z environment: - GO_FASTDFS_DIR/data restart: unless-stopped postgres: image: postgres:latest container_name: postgres_container environment: - POSTGRES_USERpostgres - POSTGRES_PASSWORDpostgres_password - POSTGRES_DBpostgres - PGDATA/var/lib/postgresql/data/pgdata volumes: - D:/ProgramData/docker/postgres/data:/var/lib/postgresql/data ports: - 5432:5432 restart: unless-stopped gitea: image: gitea/gitea:latest container_name: gitea_container environment: - USER_UID1000 - USER_GID1000 - ROOT_URLhttp://localhost:3000/ - DB_TYPEpostgres - DB_HOSTpostgres:5432 - DB_NAMEgitea - DB_USERpostgres - DB_PASSWDpostgres_password restart: always volumes: - D:/ProgramData/docker/gitea/data:/data - /etc/localtime:/etc/localtime:ro ports: - 3000:3000 - 222:22 depends_on: - postgres7.1 启动所有服务docker-compose up -d7.2 服务访问地址RustFS控制台http://localhost:9001/rustfs/console/browserGoFastDFS管理界面http://localhost:8080Giteahttp://localhost:3000PostgreSQLlocalhost:5432 (使用pgAdmin或命令行客户端连接)8. 常见问题与解决方案8.1 Windows路径问题在Windows系统中Docker可能无法访问非共享目录。确保Docker Desktop中已设置目录共享使用绝对路径如D:\\ProgramData\\docker\\rustfs\\data避免使用空格和特殊字符8.2 端口冲突如果遇到端口冲突修改docker-compose.yml中的主机端口映射例如将3000:3000改为3001:3000。8.3 权限问题在Linux系统上可能需要设置正确的文件权限chmod -R 777 D:/ProgramData/docker/9. 后续优化建议配置HTTPS为所有服务配置SSL证书设置备份策略定期备份数据卷资源限制在docker-compose.yml中设置内存和CPU限制监控系统添加PrometheusGrafana监控日志管理配置集中式日志收集系统10. 总结通过Docker我们可以轻松部署和管理多个服务无需担心环境依赖和配置冲突。本文详细介绍了RustFS、GoFastDFS、Gitea和PostgreSQL的Docker部署方案提供了完整的docker-compose配置使开发和运维工作更加高效。这些服务的组合为开发团队提供了完整的基础设施代码托管(Gitea)、文件存储(RustFS/GoFastDFS)和数据存储(PostgreSQL)。记住定期更新容器镜像保持系统安全。在生产环境中还需要考虑高可用性和灾备方案。提示本文中的所有配置均可根据实际需求进行调整特别是数据存储路径和访问凭证建议在生产环境中使用强密码并妥善保管。本文首发于CSDN转载请注明出处。作者DevOps实践者时间2026年01月18日