【Docker项目实战】使用Docker部署paopao-ce微社区

简介: 【Docker项目实战】使用Docker部署paopao-ce微社区

@TOC

一、Paopao-ce介绍

1.1 Paopao-ce简介

Paopao-ce是一个基于 Gin (Go web框架)、Zinc (Go的NoSQL数据库)、Vue.js (前端框架) 和 TypeScript (JavaScript的超集) 打造的艺术“Twitter-like”社区。它旨在提供一个清新文艺的微型社区环境,让用户能够分享艺术相关的短消息、图片和其他创意内容。

1.2 Paopao-ce特点

  • 简洁优雅的用户界面::清新的设计风格为用户提供愉悦的视觉体验。
  • 强大的多媒体支持::用户可以轻松分享图片、图文、视频等多种形式的艺术作品。
  • 高效的实时交互:实时更新的内容流确保用户第一时间获取到最新动态。
  • 丰富的社交功能::通过点赞、评论和转发等功能促进社区内的互动与交流。
  • 定制化的推荐算法::智能推荐系统帮助用户发现更多感兴趣的艺术内容。
  • 全面的隐私控制::用户可以根据需要调整个人资料和帖子的可见性。
  • 高效的搜索功能::强大的搜索能力帮助用户快速找到相关内容。
  • 开源项目特点::开放源代码,鼓励社区贡献和改进,形成一个持续发展的项目生态。

1.3 使用场景

  • 艺术家分享作品:艺术家上传最新的画作,并附上创作灵感和过程。

  • 设计师交流心得:设计师分享设计理念,与其他同行交流心得。

  • 摄影爱好者晒照片: 摄影爱好者上传旅行中的美景照片,并讲述背后的故事。

  • 音乐人发布新歌预告: 音乐人发布即将上线的新歌预告,吸引粉丝关注。

  • 艺术展览信息分享:展览策展人发布即将到来的艺术展览详情,邀请大家参加。

  • 艺术新闻速递:用户分享最新的艺术新闻,保持社区成员对艺术界的了解。

  • 创意工作坊宣传:工作坊组织者发布创意课程信息,吸引更多参与者报名。

  • 艺术挑战活动发起:社区管理员发起艺术挑战活动,鼓励用户参与并分享作品。

二、本地环境介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为centos7.6。

hostname IP地址 操作系统版本 Docker版本
jeven01 192.168.3.88 Ubuntu 22.04.1 LTS 27.1.1

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.使用Docker部署Paopao-ce微社区。

三、本地环境检查

3.1 检查Docker服务状态

检查Docker服务是否正常运行,确保Docker正常运行。

root@ubuntu-001:~# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2024-08-20 15:04:07 UTC; 4s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 21958 (dockerd)
      Tasks: 10
     Memory: 24.7M
        CPU: 231ms
     CGroup: /system.slice/docker.service
             └─21958 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

3.2 检查Docker版本

检查Docker版本,Docker版本为27.1.1。

root@jeven01:/data/poapoa/paopao-ce# docker -v
Docker version 27.1.1, build 6312585

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

root@jeven01:/data/poapoa/paopao-ce# docker compose version
Docker Compose version v2.19.1

四、下载项目源码

4.1 创建目录

创建安装部署/data/poapoa/

mkdir -p /data/poapoa/  && cd  /data/poapoa/

4.2 拉取项目

在github拉取Paopao-ce项目

git clone https://github.com/rocboss/paopao-ce.git

4.3 查看项目内容

查看Paopao-ce

root@jeven01:/data/poapoa/paopao-ce# tree -L 1 ./
./
├── auto
├── buf.gen.yaml
├── buf.work.yaml
├── build-image.sh
├── build-release.sh
├── CHANGELOG.md
├── cmd
├── config.yaml.sample
├── custom
├── default.pgo
├── deployed-sites.md
├── docker-compose.yaml
├── Dockerfile
├── docs
├── features-status.md
├── go.mod
├── go.sum
├── internal
├── LICENSE
├── main.go
├── Makefile
├── mirc
├── pkg
├── proto
├── README.md
├── ROADMAP.md
├── run.sh
├── scripts
└── web

10 directories, 19 files

五、部署Paopao-ce应用

5.1 查看部署文件

  • 进入项目目录

    root@jeven01:/data/poapoa# cd paopao-ce/
    root@jeven01:/data/poapoa/paopao-ce# ls
    auto           build-image.sh    cmd                 default.pgo          Dockerfile          go.mod    LICENSE   mirc   README.md   scripts
    buf.gen.yaml   build-release.sh  config.yaml.sample  deployed-sites.md    docs                go.sum    main.go   pkg    ROADMAP.md  web
    buf.work.yaml  CHANGELOG.md      custom              docker-compose.yaml  features-status.md  internal  Makefile  proto  run.sh
    
  • 查看docker-compose.yaml文件

version: '3.1'

services:
  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: paopao
      MYSQL_USER: paopao
      MYSQL_PASSWORD: paopao
      MYSQL_RANDOM_ROOT_PASSWORD: yes
    volumes:
      - ./scripts/paopao-mysql.sql:/docker-entrypoint-initdb.d/paopao.sql
      - ./custom/data/mysql/data:/var/lib/mysql
    ports:
      - 3306:3306
    networks:
      - paopao-network

  # minio:
  #   image: bitnami/minio:latest
  #   restart: always
  #   environment:
  #     MINIO_ROOT_USER: minio-root-user
  #     MINIO_ROOT_PASSWORD: minio-root-password
  #     MINIO_DEFAULT_BUCKETS: paopao:public
  #   ports:
  #     - 9000:9000
  #     - 9001:9001
  #   volumes:
  #     - ./custom/data/minio/data:/data
  #   networks:
  #     - paopao-network

  # redis:
  #   image: redis:7.2.1-alpine
  #   restart: always
  #   ports:
  #     - 6379:6379
  #   networks:
  #     - paopao-network

  redis:
    image: redis/redis-stack:7.2.0-v2
    restart: always
    ports:
      - 6379:6379
      - 8001:8001
    environment:
      REDISEARCH_ARGS: "MAXSEARCHRESULTS 5"
    networks:
      - paopao-network

  # zinc:
  #   image: bitbus/zincsearch:latest
  #   user: zincsearch
  #   restart: always
  #   ports:
  #     - 4080:4080
  #   volumes:
  #     - ./custom/data/zinc/data:/data
  #   environment:
  #     ZINC_FIRST_ADMIN_USER: admin
  #     ZINC_FIRST_ADMIN_PASSWORD: admin
  #     DATA_PATH: /data
  #   networks:
  #     - paopao-network

  meili:
    image: getmeili/meilisearch:v1.4
    restart: always
    ports:
      - 7700:7700
    volumes:
      - ./custom/data/meili/data:/meili_data
    environment:
      - MEILI_MASTER_KEY=paopao-meilisearch
    networks:
      - paopao-network

  # meilisearch-ui:
  #   image: riccoxie/meilisearch-ui:latest
  #   restart: always
  #   ports:
  #     - 24900:24900
  #   networks:
  #     - paopao-network

  # openobserve:
  #   image: public.ecr.aws/zinclabs/openobserve:latest
  #   restart: always
  #   ports:
  #     - 5080:5080
  #   volumes:
  #     - ./custom/data/openobserve/data:/data
  #   environment:
  #     ZO_DATA_DIR: /data
  #     ZO_ROOT_USER_EMAIL: root@paopao.info
  #     ZO_ROOT_USER_PASSWORD: paopao-ce
  #   networks:
  #     - paopao-network

  # pyroscope:
  #   image: pyroscope/pyroscope:latest
  #   restart: always
  #   ports:
  #     - 4040:4040
  #   command:
  #     - 'server'
  #   networks:
  #     - paopao-network

  # phpmyadmin:
  #   image: phpmyadmin:5.2
  #   depends_on:
  #     - db
  #   ports:
  #     - 8080:80
  #   environment:
  #     - PMA_HOST=db
  #     - PMA_USER=paopao
  #     - PMA_PASSWORD=paopao
  #   networks:
  #     - paopao-network

  backend:
    image: bitbus/paopao-ce:0.5
    restart: always
    depends_on:
      - db
      - redis
      - meili
    # modify below to reflect your custom configure
    volumes:
      - ./config.yaml.sample:/app/paopao-ce/config.yaml
      - ./custom:/app/paopao-ce/custom
    ports:
      - 8008:8008
    networks:
      - paopao-network

networks:
  paopao-network:
      driver: bridge

5.2 修改设置文件

在项目目录下,修改config.yaml.sample文件中,LocalOSS部分的 Domain值为自己服务器本地IP地址,端口为默认的8008。

 vim config.yaml.sample
LocalOSS: # 本地文件OSS存储配置
  SavePath: custom/data/paopao-ce/oss
  Secure: False
  Bucket: paopao
  Domain: 192.168.3.88:8008

在这里插入图片描述

5.3 拉取相关镜像

执行以下命令,拉取Paopao-ce相关镜像。

root@jeven01:/data/poapoa/paopao-ce# docker compose pull
[+] Pulling 4/4
 ✔ backend Pulled                                                                                                                                                                   40.4s
 ✔ db Pulled                                                                                                                                                                        37.2s
 ✔ redis Pulled                                                                                                                                                                     36.8s
 ✔ meili Pulled                                                                                                                                                                     38.4s

5.4 创建wikmd容器

  • 使用docker-compose.yaml文件创建Paopao-ce的4个容器
root@jeven01:/data/poapoa/paopao-ce# docker compose up -d
[+] Running 5/5
 ✔ Network paopao-ce_paopao-network  Created                                                                                                                                         0.1s
 ✔ Container paopao-ce-meili-1       Started                                                                                                                                         1.3s
 ✔ Container paopao-ce-db-1          Started                                                                                                                                         1.2s
 ✔ Container paopao-ce-redis-1       Started                                                                                                                                         1.0s
 ✔ Container paopao-ce-backend-1     Started                                                                                                                                         1.8s

5.5 检查容器状态

检查Paopao-ce容器状态,确保Paopao-ce容器正常启动。

root@jeven01:/data/poapoa/paopao-ce#  docker compose ps
NAME                  IMAGE                        COMMAND                  SERVICE             CREATED             STATUS                    PORTS
paopao-ce-backend-1   bitbus/paopao-ce:0.5         "/app/paopao-ce/paop…"   backend             20 seconds ago      Up 17 seconds (healthy)   0.0.0.0:8008->8008/tcp, :::8008->8008/tcp
paopao-ce-db-1        mysql:8.0                    "docker-entrypoint.s…"   db                  20 seconds ago      Up 19 seconds             0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
paopao-ce-meili-1     getmeili/meilisearch:v1.4    "tini -- /bin/sh -c …"   meili               20 seconds ago      Up 19 seconds             0.0.0.0:7700->7700/tcp, :::7700->7700/tcp
paopao-ce-redis-1     redis/redis-stack:7.2.0-v2   "/entrypoint.sh"         redis               20 seconds ago      Up 19 seconds             0.0.0.0:6379->6379/tcp, :::6379->6379/tcp, 0.0.0.0:8001->8001/tcp, :::8001->8001/tcp

5.6 检查容器日志

检查Paopao-ce容器,确保服务运行。

docker compose logs

在这里插入图片描述

六、访问Paopao-ce微社区

6.1 进入Paopao-ce初始页

访问地址:http://192.168.3.88:8008,将IP替换为自己服务器IP地址,进入到Paopao-ce初始页。如果无法访问,则检查服务器防火墙是否设置,云服务器的安全组端口是否放行等。

在这里插入图片描述

6.2 注册账号

  • 点击注册账号

在这里插入图片描述

  • 自定义填写账号密码,点击注册即可。

在这里插入图片描述
在这里插入图片描述

6.3 发布内容

测试发帖,图文、视频等,都可以正常发布。

在这里插入图片描述

七、总结

Paopao-ce 以其简洁高效的界面设计为用户打造了一个理想的创作与分享平台,无论是发布代码片段还是技术博客都变得简单快捷;不论是开源项目还是一闪而过的编程灵感,都能即时与社区内的技术同好们分享交流;实时更新的技术动态流确保了用户不会错过任何重要的技术进展,并能轻松参与到技术讨论中去,与开发者们建立联系;定制化的推荐算法让用户能够发现更多感兴趣的项目和技术文章,持续扩展技术视野;同时,强大的隐私设置功能让用户在分享个人项目的同时也能保持对个人信息的掌控,Paopao-ce 是一个专为技术爱好者量身打造的优秀社区平台。

相关文章
|
1月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
453 108
|
1月前
|
运维 Devops 持续交付
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
在企业IT建设中,软件部署常面临效率低、易出错等问题。通过Docker与自动化工具,可实现高效、标准化和可追溯的部署流程,提升企业应用交付效率,降低运维门槛,助力中小企业实现自动化部署。
149 5
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
|
29天前
|
运维 Cloud Native 开发者
Docker:现代化应用开发与部署的神器
Docker:现代化应用开发与部署的神器
176 101
|
1月前
|
设计模式 Linux 开发工具
Docker部署会吗?
本段内容主要介绍了Docker常用命令、Linux基础指令及日志查看方法,还涉及SpringMVC的执行流程、设计模式与注解,适合用于面试中技术能力的展示。
83 0
|
11天前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
55 12
docker 部署 sftp
|
13天前
|
运维 Linux 数据库
基于 Docker 部署 n8n 指南,新手一看就会
本教程详解如何通过 Docker 快速部署开源自动化工具 n8n,适合新手快速上手。内容涵盖官方部署步骤、常见难点及第三方一键部署方案,助你高效搭建自动化工作流平台。
251 6
|
19天前
|
前端开发 JavaScript 应用服务中间件
在Docker部署的前端应用中使用动态环境变量
以上步骤展示了如何在 Docker 配置过程中处理并注入环墨遁形成可执行操作流程,并确保最终用户能够无缝地与之交互而无须关心背后复杂性。
68 13
|
22天前
|
存储 Kubernetes 持续交付
为什么Docker容器化改变了开发与部署?
为什么Docker容器化改变了开发与部署?
|
1月前
|
关系型数据库 MySQL 数据库
为什么 MySQL 不推荐用 Docker 部署?
本文探讨了MySQL是否适合容器化的问题,分析了Docker容器在数据安全、性能瓶颈、状态管理及资源隔离等方面的挑战,并指出目前主流分布式数据库如TDSQL和OceanBase仍倾向于部署在物理机或KVM上。
110 0
|
运维 Java Devops
阿里云云效操作报错合集之部署docker时遇到报错,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。