|
4 | 4 | EAIRP包含物料采购、财务预算、库存管理、账单管理、用户角色组织管理等多项功能,并引入先进的AI助手,为企业提供智能管理解决方案。
|
5 | 5 |
|
6 | 6 | # 目录
|
7 |
| -- [介绍](#introduction) |
8 |
| -- [如何使用 Eairp Image](#how-to-use-this-image) |
9 |
| - - [拉取现有的镜像](#pulling-an-existing-image) |
10 |
| - - [使用 docker run](#using-docker-run) |
11 |
| - - [使用 docker-compose](#using-docker-compose) |
12 |
| - - [构建](#building) |
13 |
| -- [升级 Eairp](#upgrading-eairp) |
14 |
| -- [故障排除](#troubleshooting) |
15 |
| -- [Eairp Image 详细信息](#details-for-the-eairp-image) |
16 |
| - - [配置选项](#configuration-options) |
17 |
| - - [配置文件](#configuration-files) |
18 |
| - - [其他](#miscellaneous) |
19 |
| -- [执照](#license) |
20 |
| -- [支持](#support) |
21 |
| -- [贡献](#contribute) |
22 |
| -- [致谢](#credits) |
23 |
| - |
24 |
| -# Introduction |
| 7 | +- [简介](#简介) |
| 8 | +- [镜像使用指南](#镜像使用指南) |
| 9 | + - [拉取现有的镜像](#拉取现有的镜像) |
| 10 | + - [使用docker run](#使用docker run) |
| 11 | + - [使用docker-compose](#使用docker-compose) |
| 12 | + - [构建镜像](#构建镜像) |
| 13 | +- [升级Eairp](#升级Eairp) |
| 14 | +- [故障排查](#故障排查) |
| 15 | +- [镜像细节说明](#镜像细节说明) |
| 16 | + - [配置选项](#配置选项) |
| 17 | + - [配置文件](#配置文件) |
| 18 | + - [其他说明](#其他说明) |
| 19 | +- [许可证](#许可证) |
| 20 | +- [支持](#支持) |
| 21 | +- [贡献指南](#贡献指南) |
| 22 | +- [致谢](#致谢) |
| 23 | + |
| 24 | +# 简介 |
25 | 25 |
|
26 | 26 | 目标是提供在 Docker 中运行的可用于生产的 Eairp 系统。原因如下:
|
27 | 27 |
|
28 | 28 | - 该操作系统基于 Debian,而不是基于一些占用空间较小的发行版,如 Alpine
|
29 | 29 | - Docker Compose 使用了多个容器:一个用于 mysql,一个用于 Redis,另一个用于 Eairp + Nginx。这样就可以在不同的机器上运行它们。
|
| 30 | + |
| 31 | +# 镜像使用指南 |
| 32 | + |
| 33 | +请先安装 [Docker](https://www.docker.com/) 随后可选择: |
| 34 | + |
| 35 | +1. 从DockerHub拉取现成镜像。 |
| 36 | +2. 下载[项目源码](https://github.com/wansenai/eairp)自行构建。 |
| 37 | + |
| 38 | +## 拉取现有的镜像 |
| 39 | + |
| 40 | +需运行三个容器: |
| 41 | + |
| 42 | +- Eairp主应用容器 |
| 43 | +- MySQL数据库容器 |
| 44 | +- Redis数据库容器 |
| 45 | + |
| 46 | +### 使用docker run |
| 47 | + |
| 48 | +首先创建一个专用的docker网络: |
| 49 | + |
| 50 | +```console |
| 51 | +docker network create -d bridge eairp-nw |
| 52 | +``` |
| 53 | +然后为MySQL数据库运行一个容器,并确保其配置为使用UTF8编码。 |
| 54 | + |
| 55 | +#### 启动MySQL |
| 56 | + |
| 57 | +我们将使用的本地目录挂载MySQL容器的配置文件: |
| 58 | +- 一个用于在数据库初始化时设置权限(见下文), |
| 59 | +- 另一个是将Eairp放在MySQL数据库中的数据包含在内,这样当你停止并重新启动MySQL时,你就不会发现自己没有任何数据。 |
| 60 | + |
| 61 | +例如: |
| 62 | +- `/usr/local/mysql-init` |
| 63 | +- `/usr/local/mysql` |
| 64 | + |
| 65 | +您需要确保这些目录存在,然后将`eairp.sql`文件复制到`/usr/local/mysql-int`目录。(您可以根据需要重新命名它,例如`init.sql `)。 |
| 66 | + |
| 67 | +注意:确保您挂载到容器中的目录是绝对路径,而不是相对路径。 |
| 68 | + |
| 69 | +```console |
| 70 | +docker run --net=eairp-nw \ |
| 71 | + -d \ |
| 72 | + --name mysql-eairp \ |
| 73 | + -p 3306:3306 \ |
| 74 | + -v /usr/local/mysql:/var/lib/mysql \ |
| 75 | + -v /usr/local/mysql-init:/docker-entrypoint-initdb.d \ |
| 76 | + -e MYSQL_ROOT_PASSWORD=123456 \ |
| 77 | + -e MYSQL_USER=eairp \ |
| 78 | + -e MYSQL_PASSWORD=123456 \ |
| 79 | + -e MYSQL_DATABASE=eairp \ |
| 80 | + mysql:8.3 \ |
| 81 | + --character-set-server=utf8mb4 \ |
| 82 | + --collation-server=utf8mb4_bin \ |
| 83 | + --explicit-defaults-for-timestamp=1 |
| 84 | +``` |
| 85 | +或 |
| 86 | +```console |
| 87 | +docker run --net=eairp-nw -d --name mysql-eairp -p 3306:3306 -v /usr/local/mysql:/var/lib/mysql -v /usr/local/mysql-init:/docker-entrypoint-initdb.d -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_USER=eairp -e MYSQL_PASSWORD=123456 -e MYSQL_DATABASE=eairp -d mysql:8.3 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --explicit-defaults-for-timestamp=1 |
| 88 | +``` |
| 89 | + |
| 90 | +您应该根据本地MySQL数据库密码,修改命令 `MYSQL_PASSWORD` 参数。 |
| 91 | + |
| 92 | +#### 启动Redis |
| 93 | + |
| 94 | +我们还需要使用的本地目录挂载Redis容器的配置文件: |
| 95 | + |
| 96 | +- `/usr/local/redis/data` |
| 97 | +- `/usr/local/redis/redis.conf` |
| 98 | + |
| 99 | +在继续之前,您需要确保此目录存在。 |
| 100 | + |
| 101 | +注意:确保您挂载到容器中的目录是绝对路径,而不是相对路径。 |
| 102 | + |
| 103 | +```console |
| 104 | +docker run --net=eairp-nw \ |
| 105 | + -d \ |
| 106 | + --name redis-eairp \ |
| 107 | + -p 6379:6379 \ |
| 108 | + -v /usr/local/redis/redis.conf:/etc/redis/redis.conf \ |
| 109 | + -v /usr/local/redis/data:/data \ |
| 110 | + -e SPRING_REDIS_PASSWORD=123456 |
| 111 | + redis:latest |
| 112 | +``` |
| 113 | +或 |
| 114 | +```console |
| 115 | +docker run --net=eairp-nw -d --name redis-eairp -v /usr/local/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/redis/data:/data -p 6379:6379 redis:latest |
| 116 | +``` |
| 117 | + |
| 118 | +您应该根据本地Redis数据库密码,修改命令 `SPRING_REDIS_PASSWORD` 参数,如果没有就不用传递该环境变量。 |
| 119 | + |
| 120 | +#### 启动Eairp |
| 121 | + |
| 122 | +我们还将为Eairp日志(包含应用程序配置和状态)绑定挂载一个本地目录,例如: |
| 123 | + |
| 124 | +- `/usr/local/eairp` |
| 125 | + |
| 126 | +注意:确保您挂载到容器中的目录是绝对路径,而不是相对路径。 |
| 127 | + |
| 128 | +确保此目录存在,然后通过运行以下命令之一在容器中运行Eairp。 |
| 129 | + |
| 130 | +```console |
| 131 | +docker run --net=eairp-nw \ |
| 132 | + -d \ |
| 133 | + --name eairp \ |
| 134 | + -p 8088:8088 \ |
| 135 | + -p 3000:80 \ |
| 136 | + -v /usr/local/eairp:/application/log \ |
| 137 | + -e SPRING_DATASOURCE_URL=jdbc:mysql://mysql-eairp:3306/eairp \ |
| 138 | + -e SPRING_DATASOURCE_USERNAME=eairp \ |
| 139 | + -e SPRING_DATASOURCE_PASSWORD=123456 \ |
| 140 | + -e SPRING_REDIS_HOST=redis-eairp \ |
| 141 | + -e SPRING_REDIS_PORT=6379 \ |
| 142 | + -e SPRING_REDIS_PASSWORD=123456 \ |
| 143 | + -e API_BASE_URL=http://localhost:8088/erp-api \ |
| 144 | + wansenai/eairp:latest |
| 145 | +``` |
| 146 | +或 |
| 147 | +```console |
| 148 | +docker run --net=eairp-nw -d --name eairp -p 8088:8088 -p 3000:80 -v /usr/local/eairp:/application/log -e SPRING_DATASOURCE_URL=jdbc:mysql://mysql-eairp:3306/eairp -e SPRING_DATASOURCE_USERNAME=eairp -e SPRING_DATASOURCE_PASSWORD=123456 -e SPRING_REDIS_HOST=redis-eairp -e SPRING_REDIS_PORT=6379 -e SPRING_REDIS_PASSWORD=123456 -e API_BASE_URL=https://eairp.cn/erp-api wansenai/eairp:latest |
| 149 | +``` |
| 150 | + |
| 151 | +注意:Eairp在 `Spring Boot` 中使用 `Spring DataSource` 作为连接到数据库的数据源。 |
| 152 | + |
| 153 | +请不要忘记使用之前创建的MySQL容器和Redis容器的名称添加MySQL数据库连接环境变量(`SPRING_DATASOURCE_URL`)和Redis数据库连接环境参数(`SPRING_REDIS_HOST `),以便Eairp知道其数据库的位置。 |
| 154 | + |
| 155 | +如果要在服务器上部署,请修改 `API_BASE_URL` 环境变量的值,例如: |
| 156 | +- `http://eairp.cn/erp-api` |
| 157 | +- `https://eairp.cn/erp-api` |
| 158 | + |
| 159 | +### 使用docker-compose |
| 160 | + |
| 161 | +另一种解决方案是使用我们提供的Docker Compose文件。 |
| 162 | + |
| 163 | +首先,您需要下载[eairp源代码](https://github.com/eairps/eairp/releases)到您的本地计算机,然后您必须从[docker](https://github.com/eairps/eairp/tree/master/docker)文件夹下载5个文件,它们是: |
| 164 | + |
| 165 | +- `.env` |
| 166 | +- `Dockerfile` |
| 167 | +- `docker-compose.yaml` |
| 168 | +- `start.sh` |
| 169 | +- `mysql-scripts/eairp.sql` |
| 170 | + |
| 171 | +然后将这四个文件和 `mysql-scripts` 文件夹复制到Eairp源代码目录结构中,注意 `mysql-scscripts` 是一个文件夹。您需要复制整个文件夹,而不仅仅是其中的sql文件。 |
| 172 | + |
| 173 | +完整的目录结构如下: |
| 174 | + |
| 175 | +```markdown |
| 176 | +eairp/ |
| 177 | +├── core/ |
| 178 | +├── desktop/ |
| 179 | +├── docs/ |
| 180 | +├── images/ |
| 181 | +├── web/ |
| 182 | +├── mysql-scripts/ |
| 183 | +│ ├── eairp.sql |
| 184 | +│ |
| 185 | +└── .env |
| 186 | +└── docker-compose.yaml |
| 187 | +└── Dockerfile |
| 188 | +└── start.sh |
| 189 | +``` |
| 190 | + |
| 191 | +作为参考,这里有一个最小的Docker Compose文件,您可以将其用作示例(完整示例再[此处](https://github.com/eairps/eairp/tree/master/docker/latest/docker-compose.yaml)): |
| 192 | + |
| 193 | +```yaml |
| 194 | +version: '3.8' |
| 195 | +networks: |
| 196 | + bridge: |
| 197 | + driver: bridge |
| 198 | +services: |
| 199 | + eairp: |
| 200 | + image: wansenai/eairp:latest |
| 201 | + container_name: eairp |
| 202 | + ports: |
| 203 | + - "3000:80" |
| 204 | + - "8088:8088" |
| 205 | + environment: |
| 206 | + SPRING_DATASOURCE_URL: "${SPRING_DATASOURCE_URL}" |
| 207 | + SPRING_DATASOURCE_USERNAME: "${SPRING_DATASOURCE_USERNAME}" |
| 208 | + SPRING_DATASOURCE_PASSWORD: "${SPRING_DATASOURCE_PASSWORD}" |
| 209 | + SPRING_REDIS_HOST: "${SPRING_REDIS_HOST}" |
| 210 | + SPRING_REDIS_PORT: "${SPRING_REDIS_PORT}" |
| 211 | + SPRING_REDIS_PASSWORD: "${SPRING_REDIS_PASSWORD}" |
| 212 | + SPRING_PROFILE: "docker" |
| 213 | + depends_on: |
| 214 | + - mysql |
| 215 | + - redis |
| 216 | + networks: |
| 217 | + - bridge |
| 218 | + |
| 219 | + mysql: |
| 220 | + image: mysql:8.0 |
| 221 | + container_name: mysql |
| 222 | + environment: |
| 223 | + MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}" |
| 224 | + MYSQL_DATABASE: "eairp" |
| 225 | + MYSQL_USER: "${MYSQL_USER}" |
| 226 | + MYSQL_PASSWORD: "${MYSQL_PASSWORD}" |
| 227 | + command: |
| 228 | + - "--character-set-server=utf8mb4" |
| 229 | + - "--collation-server=utf8mb4_bin" |
| 230 | + - "--explicit-defaults-for-timestamp=1" |
| 231 | + ports: |
| 232 | + - "3306:3306" |
| 233 | + volumes: |
| 234 | + - mysql-data:/var/lib/mysql |
| 235 | + - ./mysql-scripts:/docker-entrypoint-initdb.d |
| 236 | + cap_add: |
| 237 | + - SYS_NICE |
| 238 | + networks: |
| 239 | + - bridge |
| 240 | + |
| 241 | + redis: |
| 242 | + image: redis:7.0 |
| 243 | + container_name: redis |
| 244 | + command: redis-server --requirepass 123456 |
| 245 | + ports: |
| 246 | + - "6379:6379" |
| 247 | + volumes: |
| 248 | + - redis-data:/data |
| 249 | + networks: |
| 250 | + - bridge |
| 251 | + |
| 252 | +volumes: |
| 253 | + mysql-data: |
| 254 | + redis-data: |
| 255 | +``` |
| 256 | +
|
| 257 | +## 构建镜像 |
| 258 | +
|
| 259 | +这允许您在本地重建 `Eairp-docker` 映像。以下是步骤: |
| 260 | +- ```shell |
| 261 | + docker-compose up |
| 262 | + ``` |
| 263 | +- 启动浏览器并将其指向`http://localhost:3000` |
| 264 | + |
| 265 | +请注意,`docker-compose up` 将在第一次运行时自动构建Eairp映像。如果你需要重新构建,你可以运行 `docker compose up--build`。您还可以使用 `docker build . -t eairp:latest` 例如最新的版本。 |
| 266 | + |
| 267 | +你也可以通过运行 `docker build -t eairp` 来构建镜像然后使用上面的命令启动Eairp,并使用`docker run ...` |
| 268 | + |
| 269 | +# 升级Eairp |
| 270 | + |
| 271 | +您已经安装了Eairp docker镜像并使用了它,现在是您想将Eairp升级到较新版本的时候了。 |
| 272 | + |
| 273 | +如果您遵循了上述说明,则已将Eairp本地目录映射到主机上。 |
| 274 | + |
| 275 | +升级所需做的就是停止正在运行的Eairp容器,并启动要升级到的新版本。您应该保持Mysql容器和Redis容器运行。 |
| 276 | + |
| 277 | +请注意,您当前的Eairp配置文件(`start.sh`、`.env` 和 `application.yml`)将被保留。 |
| 278 | + |
| 279 | +您应该始终查看[发行说明](https://github.com/wansenai/eairp/releases)对于当前版本和要升级到的新版本之间发生的所有变化,可能需要执行一些手动步骤(例如更新Eairp配置文件)。 |
| 280 | + |
| 281 | +# 镜像细节说明 |
| 282 | + |
| 283 | +## 配置选项 |
| 284 | + |
| 285 | +第一次从Eairp映像创建容器时,会在容器中执行一个shell脚本(`/usr/local/bin/docker-entrypoint.sh`)来设置一些配置。可以传递以下环境变量: |
| 286 | + |
| 287 | +- `SPRING_DATASOURCE_URL`: 用于连接Mysql数据库的JDBC地址,默认端口为3306。 |
| 288 | +- `SPRING_DATASOURCE_USERNAME`: 用于连接MySQL数据库的用户名 |
| 289 | +- `SPRING_DATASOURCE_PASSWORD`: 连接MySQL数据库的密码 |
| 290 | +- `SPRING_REDIS_HOST`: Eairp用于连接Redis数据库的主机地址 |
| 291 | +- `SPRING_REDIS_PORT`: Redis数据库的端口,默认为6379。 |
| 292 | +- `SPRING_REDIS_PASSWORD`: 连接Redis数据库的密码 |
| 293 | +- `API_BASE_URL`: 用于前端访问后端API地址,可以设置域名或服务器IP,默认为*http://localhost:8088/erp-api*. |
| 294 | + |
| 295 | +如果你需要执行一些高级配置,你可以通过运行以下命令在正在运行的Eairp容器内获得一个shell(但请注意,如果你删除容器,这些命令将不会被保存): |
| 296 | + |
| 297 | +```console |
| 298 | +docker exec -it <eairp container id> bash -l |
| 299 | +``` |
| 300 | + |
| 301 | +## 配置文件 |
| 302 | + |
| 303 | +您可能需要修改Eairp的4个重要配置文件: |
| 304 | +- `.env` |
| 305 | +- `start.sh` |
| 306 | +- `Dockerfile` |
| 307 | +- `docker-compose.yaml` |
| 308 | + |
| 309 | +## 其他说明 |
| 310 | +暂时没有 |
| 311 | + |
| 312 | +# 许可证 |
| 313 | + |
| 314 | +Eairp使用 [Apache-2.0](https://github.com/eairps/eairp/blob/master/LICENSE-APACHE) 和 [MIT](https://github.com/eairps/eairp/blob/master/LICENSE-MIT) 许可。 |
| 315 | + |
| 316 | +# 支持 |
| 317 | + |
| 318 | +- 如果你想提出一个问题或改进的想法,请打开一个[Issues](https://github.com/eairps/eairp/issues)。 |
| 319 | +- 如果您有任何疑问,请使用[Eairp Discussions](https://github.com/eairps/eairp/discussions)。 |
| 320 | + |
| 321 | +# 贡献指南 |
| 322 | + |
| 323 | +- 如果你想在代码方面提供帮助,请在[Eairp](https://github.com/eairps/eairp)上发送Pull Requests。 |
| 324 | +- 请注意,更改需要合并到所有其他有意义的分支中,如果它们对现有标记有意义,则必须删除并重新创建这些标记。 |
| 325 | +- 此外,每当修改分支或标签时,[Eairp DockerHub官方镜像](https://hub.docker.com/repository/docker/wansenai/eairp/general)上都会显示Pull Request. |
| 326 | + |
| 327 | +# 致谢 |
| 328 | + |
| 329 | +- 最初由 [James Zow](https://github.com/Jzow) 创建。 |
0 commit comments