Follow Us

如何使用 Docker 部署 LinkWeChat


特别说明:

  1. 前端项目可能会因为 Node 版本或网络环境无法打包,请多尝试几次;
  2. Mysql 启动后需要手动导入 SQL 文件;
  3. 要确认 Redis 是否启动正常:实测 Centos7.9 可以正常启动;

1、服务器信息:

组件类型
操作系统CentOS 7.9
CPU4核
内存16G
带宽5M
硬盘100G

2、环境准备:

软件名版本
JDK1.8
Maven3.8.8
Node14.18.3
Docker最新版
Docker-Compose最新版

3、安装配置步骤

a 安装git和JDK;
b 安装Maven;
c 安装Node;
d 安装Docker;
e 安装Docker-Compose;
f 克隆项目代码;
g 后端配置;
h 前端配置;
i 转项目docker目录,修改配置文件,执行部署脚本;

4、项目结构

4.1 后端结构

├── linkwe-api                // 系统业务接口模块
├── linkwe-auth               // 角色权限部门用户认证等模块
├── linkwe-common             // 公共组件模块
├── linkwe-fileservice	      // 文件服务模块
├── linkwe-framework	      // 框架配置
├── linkwe-gateway            // 网关服务
├── linkwe-scheduler	      // 定时任务相关模块
├── linkwe-service            // 系统service层抽取,与数据库相关交互
├── linkwe-wecome             // 企微接口实现
├── linkwe-wx-api             // 系统中设计微信公众号相关接口模块

4.2 前端结构

├── vue3-lw-pc			// 后台项目
├── linkwe-mobile		// 移动端项目包含移动工作台、任务宝、群裂变等H5 备注:移动端不开源
├── linkwe-uniapp		// uniapp短链小程序项目

5、安装环境

后端:https://gitee.com/LinkWeChat/link-wechat
前端:https://gitee.com/LinkWeChat/link-we-chat-front
项目 Docker 目录:https://gitee.com/LinkWeChat_admin/linkwechat-docker

5.1 SQL文件:

config.sql		// nacos配置文件
lw-cloud.sql
tables_xxl_job.sql

5.2 安装 OpenJDK 1.8

#CentOS7.9没有默认安装git支持,后面安装步骤需用到git命令
   yum install -y git

#升级GLIBC库为最新版
  查看系统GLIBC库
     strings /lib64/libc.so.6 |grep GLIBC_
  更新到glibc-2.27版以上,否则在配置完前端进行打包时会出错,下面更新到最新的glibc-2.38 
     wget http://ftp.gnu.org/gnu/glibc/glibc-2.38.tar.gz
     tar -xzvf glibc-2.38.tar.gz
     cd glibc-2.38
     mkdir build
     cd build
     ../configure --prefix=./
       #注意:如果出现如下错误信息:
           checking for gcc... no 
           checking for cc... no 
           checking for cc... no 
           checking for cl... no 
           configure: error: no acceptable C compiler found in $PATH 

           See `config.log' for more details. 

           
解决方法:
  
           安装GCC套件:yum install gcc 
           安装C++编译器:yum install gcc gcc-c++
           之后再编译就能成功了

     make && make install

# 卸载自带的jdk
rpm -qa |grep java
rpm -qa |grep jdk
rpm -qa |grep gcj
rpm -qa | grep java | xargs rpm -e --nodeps
# 安装openjdk
yum install java-1.8.0-openjdk* -y

5.3 安装 Maven

Maven下载地址:https://maven.apache.org/download.cgi
下载>=3.8的版本
将软件压缩包上传到服务器,本文选择/data目录:

#使用SecureCRT登录后的默认当前目录是/root,因此创建直接执行mkdir data创建的目录实际上是/root/data/,如需在根目录中执行,应使用mkdir /data,下文中所有的目录路径均基于为/data。
mkdir /data
cd /data
wget https://dlcdn.apache.org/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz 
tar -zxvf apache-maven-3.9.5-bin.tar.gz
mv apache-maven-3.9.5 maven3.9
# 新建仓库目录
mkdir ../data/maven3.9/repository

更换阿里云镜像并设置maven仓库位置:

vim /data/maven3.9/conf/settings.xml

<mirrors>
    <mirror>  
       <id>alimaven</id>
       <name>aliyun maven</name>
       <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
       <mirrorOf>central</mirrorOf> 
    </mirror>
</mirrors>

<localRepository>/root/data/maven3.9/repository</localRepository>

配置环境变量:

vim /etc/profile

export MAVEN_HOME=/root/data/maven3.9
export PATH=$PATH:$MAVEN_HOME/bin

刷新配置文件查看版本信息:

source /etc/profile
mvn -v

5.4 安装 NodeJS

wget https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz
tar -xvf node-v14.15.4-linux-x64.tar.xz
mkdir -p /usr/local/nodejs
mv node-v14.15.4-linux-x64/* /usr/local/nodejs/
# 建立node软链接
ln -s /usr/local/nodejs/bin/node /usr/local/bin
# 建立npm 软链接
ln -s /usr/local/nodejs/bin/npm /usr/local/bin

配置环境变量:

vim /etc/profile

export MAVEN_HOME=/root/data/maven3.9
export NODE_HOME=/usr/local/nodejs
export PATH=$PATH:$MAVEN_HOME/bin:$NODE_HOME/bin

刷新配置文件查看版本信息:

source /etc/profile
node -v

安装node版本管理工具:

npm install n -g

# 查看所有node版本
# npm view node versions
# 指定安装版本
# n 14.18.3
# 升级到最新的稳定版本
# n stable

# 查看npm当前镜像源
npm config get registry  
# 国内源
npm config set registry https://registry.npmmirror.com/    
# 设置npm镜像源为淘宝镜像
npm config set registry https://registry.npm.taobao.org/

5.5 安装 Docker

卸载Docker旧版本:

yum remove docker \
     docker-client \
     docker-client-latest \
     docker-common \
     docker-latest \
     docker-latest-logrotate \
     docker-logrotate \
     docker-engine

安装 yum-utils 软件包:

yum install -y yum-utils

设置 Docker 仓库:

yum-config-manager \
 --add-repo \
 http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装最新版本的 Docker:

yum install -y docker-ce docker-ce-cli containerd.io

启动 Docker:

systemctl enable docker --now
docker version

5.6 安装 Docker-Compose

网络不好的话,可以提前下载好上传到/usr/local/bin目录:

wget https://github.com/docker/compose/releases/download/1.24.0/docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

6、克隆项目

mkdir /root/data/service cd /root/data/service
mkdir link-wechat && cd link-wechat
git clone https://gitee.com/LinkWeChat/link-wechat
git clone https://gitee.com/LinkWeChat/link-we-chat-front
git clone https://gitee.com/LinkWeChat_admin/linkwechat-docker

6.1 后端配置

修改后端配置文件:

# 进入后端目录(/root/data/service/link-wechat/link-wechat)
cd link-wechat
vim pom.xml

第一个是项目根目录下的pom.xml文件,需要找到org.springframework.cloud,添加版本信息:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
    <version>3.1.1</version>
</dependency>

第二个是./config/run/目录下的bootstrap.yml文件,使用linkwechat-docker/config目录下的bootstrap.yml文件替换:

cd /root/data/service/link-wechat/link-wechat/config/run

cp ../../../linkwechat-docker/config/bootstrap.yml ./

代码打包:

cd /root/data/service/link-wechat/link-wechat/
mvn clean package

6.2 前端配置

修改前端配置文件:

# 进入前端目录
cd /root/data/service/link-wechat/link-we-chat-front
cd vue3-lw-pc/

修改env.js文件:127.0.0.1 修改成对应的服务器 ip 或域名,其余不变:

/**
 *  * 环境变量
 *   * 以下划线 '_' 开头的字段表示只在build命令打包时有效,勿在项目中使用
 *    */
const envs = {
  production: {
    DOMAIN: 'http://127.0.0.1',				// <---这里
    BASE_URL: './', // 路由基础路径
    BASE_API: 'http://127.0.0.1/api',	// <---这里
    SYSTEM_API: '/api',
    _ISGZIP: true, // 是否开启gzip压缩
    _ISCDN: true, // 是否开启cdn加速
  },
}
const env = Object.assign(
  { SYSTEM_NAME_ALL: 'LinkWeChat -- 全链路私域数字化营销增长解决方案' },
  envs[process.env.VUE_APP_ENV || process.env.NODE_ENV],
)

module.exports = env

代码打包:

npm i --registry=https://registry.npmmirror.com
npm run build

这里是最容易出错的地方,可能会因为node版本或网络环境,无法下载依赖,或无法打包,需要多试几次;
最直接的方法是在网络环境好的地方打好包,会生成一个PC目录,然后上传到前端项目根目录。

6.3 项目 Docker 目录配置

修改配置文件:

# 进入项目docker目录
cd /root/data/service/link-wechat/linkwechat-docker

修改copy.sh文件:将前端目录修改成实际的目录,注释掉对linkwe-mobile目录的操作(移动端不开源):

cp -r ../link-we-chat-front/vue3-lw-pc/pc/** ./nginx/html/pc
# cp -r ../link-we-chat-front/linkwe-mobile/h5/** ./nginx/html/mobile

修改config/pc/目录下的env.js文件:127.0.0.1 修改成对应的服务器 ip 或域名,其余不变:

cd config/pc/

修改config/mobile/目录下的env.js文件:127.0.0.1 修改成对应的服务器 ip 或域名,并修改成企业微信对应的 CorpID 和应用 ID:

cd /data/service/link-wechat/linkwechat-docker/config/mobile
vim env.js

const envs = {
  production: {
    BASE_URL: '/mobile/', // 路由基础路径
    BASE_API: 'http://127.0.0.1/api',		// <---这里
    APPID: '这里填充自己的企业微信CorpID',				// <---这里
    AGENTID: '这里填充自己的应用ID',								// <---这里
  },
}
let env = envs[process.env.VUE_APP_ENV]

module.exports = env

回到项目 Docker 根目录:

cd /root/data/service/link-wechat/linkwechat-docker

执行Copy脚本:

# 拷贝指定文件到对应目录
sh copy.sh

启动Mysql

docker-compose up -d lw-mysql

检查Mysql状态:

docker exec -it lw-mysql bash
cd /docker-entrypoint-initdb.d/
ls

若发现初始化目录为空,连接mysql,查看数据库创建情况:

手动导入sql文件:

导入后:

启动 Nacos:

docker-compose up -d lw-nacos

检查 Nacos 状态:

docker ps -a

访问服务器 IP:8848/nacos:

auth模块 的 nacos yaml文件末尾请添加如下内容:

rsa:
  privateKey: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKNPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gAkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWowcSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99EcvDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthhYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3UP8iWi1Qw0Y=
  publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==

启动 Redis:

docker-compose up -d lw-redis
docker ps -a

启动 Rabbitmq 、xxl-job:

docker-compose up -d lw-rabbitmq lw-xxl-job

启动项目模块:

sh deploy.sh modules

项目模块清单:

lw-nginx 
lw-gateway 
lw-auth 
lw-modules-api 
lw-modules-file 
lw-modules-scheduler 
lw-modules-wecom 
lw-modules-wx

检查项目模块启动状态:

访问服务器IP。

结束。

Our Services

Worpress

Lorem ipsum dolor amet consectetur adipiscing elit. Nunc mi dui placerat eu faucibus vel, efficitur quis magna. Pellentesque habitant morbi tristique senectus et netus et malesuada.

Read More

Web Design

Lorem ipsum dolor amet consectetur adipiscing elit. Nunc mi dui placerat eu faucibus vel, efficitur quis magna. Pellentesque habitant morbi tristique senectus et netus et malesuada.

Read More

Ecommerce

Lorem ipsum dolor amet consectetur adipiscing elit. Nunc mi dui placerat eu faucibus vel, efficitur quis magna. Pellentesque habitant morbi tristique senectus et netus et malesuada.

Brand Now

SEO

Lorem ipsum dolor amet consectetur adipiscing elit. Nunc mi dui placerat eu faucibus vel, efficitur quis magna. Pellentesque habitant morbi tristique senectus et netus et malesuada.

Read More

Our Team

zahera

Zahera

(HR)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel tempor sem. Vestibulum suscipit faucibus sem ut porta. Integer ut justo euismod, auctor turpis et

Alex

Alex

(CEO)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel tempor sem. Vestibulum suscipit faucibus sem ut porta. Integer ut justo euismod, auctor turpis et

Alex

Sara

(CCO)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel tempor sem. Vestibulum suscipit faucibus sem ut porta. Integer ut justo euismod, auctor turpis et

Mark

Mark

(Manager)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel tempor sem. Vestibulum suscipit faucibus sem ut porta. Integer ut justo euismod, auctor turpis et

Testimonials

  • Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit,
    Safira
    (Quia, CEO)
  • At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.
    Alana
    (Wirate, PA)
  • Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
    Sara
    (Yahoo, Manager)

Our Partners