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 来源: