diff --git a/dujiaoka/README.md b/dujiaoka/README.md index fff7ec2..8bf76e9 100644 --- a/dujiaoka/README.md +++ b/dujiaoka/README.md @@ -1,7 +1,86 @@ # dujiaoka +GitHub [stilleshan/dockerfiles](https://github.com/stilleshan/dockerfiles) +Docker [stilleshan/dujiaoka](https://hub.docker.com/r/stilleshan/dujiaoka) +> *docker image support for X86 and ARM* + +## 更新 +- **2022-07-19** 更新`2.0.4`版 docker 镜像,同时支持 X86 和 ARM 架构. +- **2022-07-19** 更新`2.0.3`版 docker 镜像,同时支持 X86 和 ARM 架构. + ## 简介 -待优化中... +基于 🦄独角数卡 [assimon/dujiaoka](https://github.com/assimon/dujiaoka) 的 docker 镜像,支持 docker-compose 数据持久化部署。 + +> *本项目基于现有的 [Apocalypsor/dujiaoka-docker](https://github.com/Apocalypsor/dujiaoka-docker) 项目重新制作支持 ARM64 架构镜像,你也可以参考下文作者博客链接部署。* + +## 部署 +### 准备配置文件 +```shell +mkdir dujiaoka && cd dujiaoka +# 创建主目录 +mkdir storage uploads +chmod -R 777 storage uploads +# 创建数据目录用于挂载 +``` + +下载本项目中的`env.conf`和`docker-compose.yml`到上述的`dujiaoka`目录中。 + +```shell +chmod -R 777 env.conf +# 重要步骤 +``` + +### 配置 nginx +参考`domian.conf`修改`域名`和`证书路径`,最重要的是`location ^~ /`中的相关配置。 +```nginx + location ^~ / { + proxy_pass http://127.0.0.1:56789; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + + add_header X-Cache $upstream_cache_status; + + proxy_set_header Accept-Encoding ""; + sub_filter "http://" "https://"; + sub_filter_once off; + } +``` + +### 启动容器 +确保目录中有`docker-compose.yml`,`env.conf`,`storage`和`uploads`后执行以下命令`首次`启动: +> *注意修改 docker-compose.yml 中的 mysql 密码* +```shell +docker-compose up -d +``` +首次启动后,会自动生成`mysql`和`redis`的数据目录。 + +### 网页安装 +访问域名开始安装: +- 将`mysql`的地址改为`db` +- 将`mysql`的用户名改为`dujiaoka` +- 将`redis`的地址改为`redis` +- 填写网站名称 +- 网站 url 填写完整域名地址,例如`https://shop.ioiox.com` + +点击安装,并成功安装,先修改其他参数后在进行登录使用。 +```shell +docker-compose down +# 停止服务 +``` +将`docker-compose.yml`中的`INSTALL`改为`false` +将`env.conf`中的`APP_DEBUG`改为`false` +此时可以看到`env.conf`中的相关配置已经自动变为安装时填写的参数。 +```shell +docker-compose up -d +# 再次启动开始使用 +``` +### 完成部署 +自此已完成安装部署,访问域名开始使用: +- 所有配置,数据,缓存,数据库都存储在整个`dujiaoka`目录中,定期备份即可。 +- 如需迁移服务器,仅需打包本目录到新服务器,执行上述所有`chmod 777`的权限命令,再次`docker-compose up -d`即可恢复上线。 ## 链接 - [Apocalypsor/dujiaoka-docker](https://github.com/Apocalypsor/dujiaoka-docker) diff --git a/dujiaoka/docker-compose.yml b/dujiaoka/docker-compose.yml new file mode 100644 index 0000000..ed4efaa --- /dev/null +++ b/dujiaoka/docker-compose.yml @@ -0,0 +1,33 @@ +version: "3" + +services: + web: + image: stilleshan/dujiaoka + environment: + # - INSTALL=false + - INSTALL=true + # - MODIFY=true + volumes: + - ./env.conf:/dujiaoka/.env + - ./uploads:/dujiaoka/public/uploads + - ./storage:/dujiaoka/storage + ports: + - 56789:80 + restart: always + + db: + image: mariadb:focal + restart: always + environment: + - MYSQL_ROOT_PASSWORD=YOUR_PASSWORD + - MYSQL_DATABASE=dujiaoka + - MYSQL_USER=dujiaoka + - MYSQL_PASSWORD=YOUR_PASSWORD + volumes: + - ./mysql:/var/lib/mysql + + redis: + image: redis:alpine + restart: always + volumes: + - ./redis:/data diff --git a/dujiaoka/domain.conf b/dujiaoka/domain.conf new file mode 100644 index 0000000..ea2a729 --- /dev/null +++ b/dujiaoka/domain.conf @@ -0,0 +1,46 @@ +server { + listen 80; + server_name shop.domain.com; + return 301 https://shop.domain.com$request_uri; +} + +server { + listen 443 ssl http2; + server_name shop.domain.com; + index index.html index.htm index.php default.html default.htm default.php; + + ssl_certificate /usr/local/nginx/conf/ssl/domain.com.cer; + ssl_certificate_key /usr/local/nginx/conf/ssl/domain.com.key; + ssl_trusted_certificate /usr/local/nginx/conf/ssl/domain.com.cer; + + ssl_stapling on; + ssl_stapling_verify on; + ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; + ssl_prefer_server_ciphers on; + ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4; + ssl_ecdh_curve secp384r1; + ssl_session_timeout 10m; + ssl_session_cache builtin:1000 shared:SSL:10m; + ssl_session_tickets off; + resolver 8.8.8.8 8.8.4.4 valid=60s ipv6=off; + resolver_timeout 5s; + add_header Strict-Transport-Security "max-age=63072000" always; + + location ^~ / { + proxy_pass http://127.0.0.1:56789; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + + add_header X-Cache $upstream_cache_status; + + proxy_set_header Accept-Encoding ""; + sub_filter "http://" "https://"; + sub_filter_once off; + } + + # access_log /home/wwwlogs/shop.domain.com.access.log main; + # error_log /home/wwwlogs/shop.domain.com.error.log warn; +} \ No newline at end of file diff --git a/dujiaoka/env.conf b/dujiaoka/env.conf new file mode 100644 index 0000000..fc12d2c --- /dev/null +++ b/dujiaoka/env.conf @@ -0,0 +1,47 @@ +APP_NAME=独角数卡 +APP_ENV=local +APP_KEY=base64:hDVkYhfkUjaePiaI1tcBT7G8bh2A8RQxwWIGkq7BO18= +APP_DEBUG=true +APP_URL=http://dujiaoka.test + +LOG_CHANNEL=stack + +# 数据库配置 +DB_CONNECTION=mysql +DB_HOST=db +DB_PORT=3306 +DB_DATABASE=dujiaoka +DB_USERNAME=dujiaoka +DB_PASSWORD=YOUR_PASSWORD + +# redis 配置 +REDIS_HOST=redis +REDIS_PASSWORD= +REDIS_PORT=6379 + +BROADCAST_DRIVER=log +SESSION_DRIVER=file +SESSION_LIFETIME=120 + + +# 缓存配置 +# file 为磁盘文件 redis 为内存级别 +# redis 为内存需要安装好 redis 服务端并配置 +CACHE_DRIVER=redis + +# 异步消息队列 +# sync 为同步 redis 为异步 +# 使用 redis 异步需要安装好 redis 服务端并配置 +QUEUE_CONNECTION=redis + +# 后台语言 +## zh_CN 简体中文 +## zh_TW 繁体中文 +## en 英文 +DUJIAO_ADMIN_LANGUAGE=zh_CN + +# 后台登录地址 +ADMIN_ROUTE_PREFIX=/admin + +# 后台 https 支持 docker 部署无需开启 +#ADMIN_HTTPS=true