ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

docker-compose一键打包thinkphp

2023-05-05 11:41:00  阅读:443  来源: 互联网

标签:php开发 PHP php 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
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有