logo

Docker安装

一、什么是 Docker ?

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

二、机器要求

操作系统

  • Ubuntu 22.04
  • Ubuntu 24.04
  • CentOS 7
  • CentOS 8
  • Debain 10
  • Debain 11
  • Debain 12

CPU架构

  • amd64
  • arm64

配置

配置项最低推荐
CPU4核8核
内存8GB16GB
硬盘40GB200GB
带宽10M50M

三、安装

本篇文章我将以腾讯云的 Ubuntu22.04 机器作为演示。


3.1 安装 Docker

如果您的机器已经安装好了 Docker 的话,您可以直接看下一步。

请执行下面命令安装 docker

curl -fsSL https://download.playeduos.com/install-docker-20240705.sh | bash -s docker --mirror Aliyun

等待一段时间,命令执行完成之后,我们可以执行下面命令查看当前安装的 docker 版本

如果您是 CentOS 的话,执行上述命令之后,您还需要执行 sudo systemctl start docker 启动 Docker 服务。

sudo docker version

结果如下:

ubuntu@VM-0-9-ubuntu:~$ sudo docker version
Client: Docker Engine - Community
 Version:           27.0.3
 API version:       1.46
 Go version:        go1.21.11
 Git commit:        7d4bcd8
 Built:             Sat Jun 29 00:02:33 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          27.0.3
  API version:      1.46 (minimum version 1.24)
  Go version:       go1.21.11
  Git commit:       662f78c
  Built:            Sat Jun 29 00:02:33 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.18
  GitCommit:        ae71819c4f5e67bb4d5ae76a6b735f29cc25774e
 runc:
  Version:          1.7.18
  GitCommit:        v1.1.13-0-g58aa920
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

3.2 下载 playedu 代码

请执行下面命令下载 playedu 的最新代码

CentOS 可以通过 sudo yum update && sudo yum install git 安装 git

cd ~

git clone --branch main https://gitee.com/playeduxyz/playedu.git playedu

3.3 运行服务

cd playedu

sudo docker compose up -d

执行结果如下:

[+] Running 8/8
 ✔ Network playedu_playedu      Created                                                                                                                                                                                                                                                                            0.1s 
 ✔ Volume "playedu_redis-data"  Created                                                                                                                                                                                                                                                                            0.0s 
 ✔ Volume "playedu_mysql-data"  Created                                                                                                                                                                                                                                                                            0.0s 
 ✔ Volume "playedu_minio-data"  Created                                                                                                                                                                                                                                                                            0.0s 
 ✔ Container playedu-redis-1    Started                                                                                                                                                                                                                                                                            0.5s 
 ✔ Container playedu-mysql-1    Started                                                                                                                                                                                                                                                                            0.5s 
 ✔ Container playedu-minio-1    Started                                                                                                                                                                                                                                                                            0.5s 
 ✔ Container playedu-playedu-1  Started 

到这,等待20s左右,我们就可以在浏览器输入下面的地址访问 playedu 的服务了:

需要注意的是,如果您的机器是云服务上比如腾讯云,阿里云之类的,那么您还需要到它们的控制台配置下防火墙白名单,允许 9700,9800,9801,9900,9002 端口的无限制访问。

端口地址默认账号
后台管理http://服务器IP:9900admin@playedu.xyz / playedu
PC学员端口http://服务器IP:9800-
H5学员端口http://服务器IP:9801-
API学员端口http://服务器IP:9700-
MinIO存储端口http://服务器IP:9002-

3.4 配置域名和开启 https 协议

在简单体验 playedu 之后,您会发现通过服务器IP和端口访问终究是比较麻烦且默认的 http 协议也不安全。下面,我将指导您配置通过域名访问且开启 https 协议。

要想通过域名访问 playedu 服务的话,那么我们需要给各个端口分配好域名。下面,我将举个例子说明。如果您对域名分配没有什么概念的话,那么您可以完全按照我的思路来进行分配。

在编写本文,我这边注册了一个域名 playedu.xyz ,基于这个域名,我将分配五个子域名给到 playedu 的五个端口,如下:

端口域名
后台管理admin.playedu.xyz
PC学员端口edu.playedu.xyz
H5学员端口h5.playedu.xyz
API端口api.playedu.xyz
MiniO端口minio.playedu.xyz

分配好域名之后,我们将子域名解析到服务器(解析过程就不在赘述。)下面,将假设您已经完成了域名的解析配置,否则下文的教程您可能会失败(因为会涉及到自动申请 SSL 证书的流程,如果未配置解析会导致申请 SSL 证书失败)。

首先,创建个 Caddyfile 文件:

sudo mkdir /playedu-data

sudo vi /playedu-data/Caddyfile

请将下面的内容复制并修改为您的域名,然后保存:

请注意,下面的内容是我编写本文使用的域名。您要将其中的域名修改为您自己的域名!!!

api.playedu.xyz {
    reverse_proxy playedu:9898
}

edu.playedu.xyz {
    reverse_proxy playedu:9800
}

h5.playedu.xyz {
    reverse_proxy playedu:9801
}

admin.playedu.xyz {
    reverse_proxy playedu:9900
}

minio.playedu.xyz {
    reverse_proxy minio:9000
}

保存内容。然后执行下面的命令创建 caddy 服务:

请注意,再执行下面的命令之前,请确认开放了服务器的 80443 端口!!!

sudo docker run -d --name playedu-caddy \
  --restart=always \
  -p 80:80 -p 443:443 \
  --network playedu_playedu \
  -v /playedu-data/Caddyfile:/etc/caddy/Caddyfile \
  registry.cn-hangzhou.aliyuncs.com/hzbs/caddy:2.8.4-alpine

上述命令执行之后,等待30s左右我们就可以通过域名访问 playedu 服务了。

四、配置系统

4.1 网站设置

到这里,我们可以通过域名访问 playedu 服务了。想要完整的使用 playedu 系统还需做进一步的配置。首先,进入到 playedu 后台,点击左侧菜单的系统配置:


4.2 存储设置

五、收尾

  • 记得关闭本文前面开通的服务器端口的 9700,9800,9801,9900,9002 白名单