介绍

原理其实非常的简单。就是将你的服务器上的部署过程,放到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