介绍
原理其实非常的简单。就是将你的服务器上的部署过程,放到docker里面来,然后让Dockerfile文件来执行你手动的一些配置过程。
可以参考这个(https://github.com/LeiShi1313/nexusphp-docker-compose/blob/main/docker-compose-dev.yml)但是年久失修,而且新版本的nexusphp的版本也不够高了,因此在执行的过程总出现一堆的问题....索性自己搞一个,方便后期的维护
先来看目录
.
├── Dockerfile // PHP的编辑镜像文件
├── composer.phar
├── db_data // Mysql本地数据库的存放路径
├── docker-compose.yml
├── nexusphp-2.0 // 代码文件
└── nexusphp.conf // nginx配置文件
Dockerfile (PHP编译)
FROM php:8.1-fpm
RUN apt-get update && apt-get install -y zlib1g-dev libpng-dev libgmp-dev libjpeg62-turbo-dev git unzip
ENV COMPOSER_ALLOW_SUPERUSER=1
RUN docker-php-source extract \
&& docker-php-ext-install mysqli gd bcmath pdo_mysql gmp pcntl opcache sockets\
&& docker-php-ext-configure gd --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd \
&& pecl install redis-5.3.4 \
&& docker-php-ext-enable redis \
&& docker-php-source delete
COPY composer.phar /usr/local/bin/composer
RUN chmod 0777 /usr/local/bin/composer
COPY "./nexusphp-2.0" /var/www/html
WORKDIR /var/www/html
RUN composer install
RUN cp -R "./nexusphp-2.0/nexus/Install/install" public/
RUN chmod -R 0777 /var/www/html
docker-compose.yml
version: '3.7'
services:
php:
build: .
environment:
- COMPOSER_ALLOW_SUPERUSER=1
expose:
- 9000
volumes:
- ./nexusphp-2.0:/var/www/html
nginx:
image: nginx
volumes:
- ./nexusphp.conf:/etc/nginx/conf.d/default.conf
- ./nexusphp-2.0:/var/www/html
- ./logs:/var/log/nginx/
ports:
- 8000:80
db:
image: mysql:5.7
platform: linux/amd64
volumes:
- ./db_data:/var/lib/mysql
- ./nexusphp-2.0/_db/dbstructure_v1.6.sql:/docker-entrypoint-initdb.d/dbstructure.sql
restart: always
environment:
MYSQL_ROOT_PASSWORD: nexusphp
MYSQL_DATABASE: nexus_php_php8
MYSQL_USER: nexusphp
MYSQL_PASSWORD: nexusphp
redis:
image: redis
编译镜像
首次执行,需要手动编译一下镜像
docker-compose build --no-cache
启动
docker-compose up -d
注意
首次启动记得
composer install
进入PHP的容器后执行