编程语言
首页 > 编程语言> > docker-compose一键打包thinkphp

docker-compose一键打包thinkphp

作者:互联网

打包 ThinkPHP 项目和打包普通的 PHP 项目类似,只需在 Dockerfile 中添加 ThinkPHP 项目所需的依赖和配置即可。

下面是一个示例 Dockerfile:

FROM php:7.4-fpm

# 安装系统所需的软件包和 PHP 扩展
RUN apt-get update \
    && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
        libzip-dev \
        zip \
        unzip \
        git \
    && docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd pdo_mysql zip bcmath

# 安装 Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# 复制项目文件到容器中
COPY . /var/www/html

# 安装项目依赖
WORKDIR /var/www/html
RUN composer install --no-dev --no-scripts --prefer-dist --no-interaction

# 设置文件夹权限
RUN chmod -R 777 storage bootstrap/cache

# 容器内启动 PHP-FPM
CMD ["php-fpm"]
 

该 Dockerfile 使用 PHP 7.4-fpm 作为基础镜像,安装了所需的系统软件包和 PHP 扩展,复制项目文件到容器中,安装项目依赖,设置文件夹权限,最后启动 PHP-FPM。

在 Docker Compose 配置文件中,可以按照普通的 PHP 项目添加服务定义,并将该 Dockerfile 作为构建镜像的指令。例如:

version: '3'

services:
  web:
    build: .
    ports:
      - "8080:80"
    volumes:
      - .:/var/www/html
    depends_on:
      - db
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: myrootpassword
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:
 

该配置文件中定义了 web 和 db 两个服务,web 服务使用本地的 Dockerfile 构建镜像,将容器内部的 80 端口映射到主机的 8080 端口,将主机当前目录挂载到容器的 /var/www/html 目录下。db 服务使用官方的 MySQL 镜像,并指定了一些环境变量和数据卷。

最后使用命令 docker-compose up 启动容器,使用命令 docker-compose down 关闭容器。

标签:php开发,PHP,php,docker-compose,thinkphp
来源: