这次选择演示的机器是谷歌云,服务器系统是utunbu20.04,如果是新建的系统,建议执行以下代码升级软件包和安装必要工具,这次我选择的是多容器分别部署多个项目,将底层环境和项目分别部署在不同的容器里,为以后添加项目做准备,不需要再重新去部署环境了,移植的时候也只需要备份多个容器。
apt update -y && apt upgrade -y && apt install -y curl wget sudo socat unzip tar htop
在已有的环境下,只需要执行
apt update -y
建立项目路径
mkdir -p /docker/data && cd /docker/data
创建项目文件夹,因为涉及到多个项目,所有目录有点多
mkdir html uploads storage mysql redis-data npm-data letsencrypt
创建配置文件
touch php.ini env.conf Dockerfile
创建docker-compose.yml,复制以下代码
version: '3'
services:
php:
build:
context: .
dockerfile: Dockerfile
container_name: php
restart: always
volumes:
- ./html:/var/www/html
- ./php.ini:/usr/local/etc/php/conf.d/php.ini
ports:
- '9000:9000'
networks:
- web1
wordpress:
image: 'wordpress:latest'
volumes:
- ./html:/var/www/html
ports:
- '8080:80'
depends_on:
- db
- redis
networks:
- web1
dujiaoka:
image: stilleshan/dujiaoka
container_name: dujiaoka
restart: always
environment:
- INSTALL=true
volumes:
- ./env.conf:/dujiaoka/.env
- ./uploads:/dujiaoka/public/uploads
- ./storage:/dujiaoka/storage
ports:
- 8085:80
depends_on:
- db
- redis
networks:
- web1
db:
image: 'mysql:5.7'
container_name: mysql
restart: unless-stopped
volumes:
- ./mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: yourpassword
MYSQL_DATABASE: database
MYSQL_USER: username
MYSQL_PASSWORD: yourpassword
ports:
- '3306:3306'
networks:
- web1
redis:
image: 'redis:latest'
container_name: redis
restart: unless-stopped
volumes:
- ./redis-data:/data
ports:
- '6379:6379'
networks:
- web1
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'
container_name: npm
restart: always
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./npm-data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
- web1
networks:
web1:
driver: bridge
复制以下配置信息到env.conf 文件
APP_NAME=我的小店
APP_ENV=local
APP_KEY=base64:rKwRuI6eRpCw/9e2XZKKGj/Yx3iZy5e7+FQ6+aQl8Zg=
APP_DEBUG=true
APP_URL=http://你的域名
LOG_CHANNEL=stack
# 数据库配置
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=dujiaoka
DB_USERNAME=dujiaoka
DB_PASSWORD=changeyourpassword
# 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 (前端开启了后端也必须为true)
# 后台登录出现0err或者其他登录异常问题,大概率是开启了https而后台没有开启,把下面的false改为true即可
# ADMIN_HTTPS=false
这里的信息可以不用改动,因为到时候安装的时候会让你填写,覆盖配置文件的信息
复制以下代码到Dockerfile,php 环境里的 PHP扩展使用Dockerfile 安装
FROM php:7.4-fpm
# 安装 Redis 扩展所需的依赖项
RUN apt-get update && apt-get install -y \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
libxml2-dev \
libzip-dev
# 安装所需的 PHP 扩展
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install gd mysqli pdo pdo_mysql soap zip
# 安装 Redis 扩展
RUN pecl install redis \
&& docker-php-ext-enable redis
安装docker 环境,可以参考 这篇文章,docker 常用命令,持续输出更新中
安装完毕后运行docker-compose 命令安装,如图同时拉取多个镜像
下面是使用Dockerfile 安装 php 环境和扩展的图片
安装完毕后使用docker ps 查看容器,容器全部正常运行
现在使用IP加端口访问 安装界面
出现图片所示错误表示没有权限
chmod -R 777 env.conf //修改权限
访问后台出现如下错误
接着我们修改一下docker-compose.yml以及env.conf里面的内容。
分别把- INSTALL=true 改成- INSTALL=false
把APP_DEBUG=true改成APP_DEBUG=false
修改好了重新运行
docker-compose up -d
使用admin 正常访问后台,修改默认账户和密码
现在可以利用 nginx proxy manager 配置 反向代理 ,用自己的域名访问项目地址,如果不清楚可以留言告知,使用 npm 可以轻松获得证书,用https 访问站点
然后就自己开始折腾吧,拜拜!
文章评论