首页 > 系统相关 >Docker搭建PHP & Nginx & ThinkPHP8.0框架

Docker搭建PHP & Nginx & ThinkPHP8.0框架

时间:2025-01-23 15:10:51浏览次数:1  
标签:apt server Nginx https ThinkPHP8.0 Docker php docker tp8

  • 创建容器: cd 工作目录
    # 创建项目文件 mkdir tp8
    cd tp8
    # 初始化docker docker init
    # 交互:start # 选择语言&服务器配置(选择php,回车即可) ? What application platform does your project use? PHP with Apache # 语言版本(回车为docker的默认php版本,这里为指定版本8.1) ? What version of PHP do you want to use? 8.1 # 设置当前目录作为docker容器app映射的工作目录(回车即可) ? Please enter the relative directory (with a leading .) for your app: ./ (current directory) # docker监听的本地端口,该端口会映射到docker的指定端口,默认80 ? What port do you want to use to access your app? 9000 # 交互:end
    # 接下来会出现三个docker核心文件,以下是简单解释: # .dockerignore 将本地目录映射到docker容器时需要忽略的文件 # compose.yaml 使用yaml语法管理多容器的配置文件,用来管理容器用的 # Dockerfile 容器化构建时调用的核心配置文件
    配置dockerfile # 使用 PHP 8.0 作为基础镜像 FROM php:8.0-fpm
    # 更新软件包列表并安装必要的编译工具和依赖 # 更换软件源为阿里云源 RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \     sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \     apt-get update -qq && \     apt-get install -y --no-install-recommends libzip-dev zip libpng-dev libonig-dev libxml2-dev unzip && \     docker-php-ext-install pdo_mysql zip mbstring exif pcntl bcmath gd && \     # 清理安装包缓存     apt-get clean && \     rm -rf /var/lib/apt/lists/*

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

    # 更换 Composer 源为阿里云源 RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    # 安装 git 工具 RUN apt-get update && apt-get install -y git
    # 设置环境变量允许在 root 用户下使用 Composer 插件 ENV COMPOSER_ALLOW_SUPERUSER=1
    # 设置工作目录 WORKDIR /var/www/html
    # 复制项目文件到容器中 COPY . /var/www/html
    # 切换用户为 www-data USER www-data
    # 使用 Composer 安装 ThinkPHP 8.0 及其依赖 RUN composer create-project topthink/think thinkphp8
    # 切换回 root 用户安装 Nginx USER root
    # 安装 Nginx RUN apt-get update && apt-get install -y nginx
    # 复制 Nginx 配置文件 COPY nginx.conf /etc/nginx/nginx.conf
    # 暴露端口 EXPOSE 80
    # 启动 Nginx 和 PHP-FPM 服务 CMD service nginx start && php-fpm 添加nginx配置文件:nginx.conf worker_processes 1;
    events {     worker_connections 1024; }
    http {     include       mime.types;     default_type  application/octet-stream;
        sendfile        on;     keepalive_timeout  65;
        server {         listen 80;         server_name localhost;
            root /var/www/html/thinkphp8/public;         index index.php index.html index.htm;
            location / {             try_files $uri $uri/ /index.php?$query_string;         }
            location ~ \.php$ {             fastcgi_pass   127.0.0.1:9000;             fastcgi_index  index.php;             fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;             include        fastcgi_params;         }     } } 做完上述操作后,开始构建:docker compose up --build 构建成功会提示: [+] Running 2/2g to docker.io/library/tp8-server:latest                                                                                                                          1.3s ✔ Service server          Built                                                                                                                                               132.1s ✔ Container tp8-server-1  Recreated                                                                                                                                             0.3s Attaching to server-1 server-1  | Starting nginx: nginx. server-1  | [22-Jan-2025 09:27:07] NOTICE: fpm is running, pid 20 server-1  | [22-Jan-2025 09:27:07] NOTICE: ready to handle connections 打开终端,查看安装的服务 # 查看docker的所有服务 roy_chen@roy-chendeMacBook-Pro ~ % docker ps -a                     CONTAINER ID   IMAGE        COMMAND                   CREATED          STATUS          PORTS                            NAMES f22203ee0e1d   tp8-server   "docker-php-entrypoi…"   34 seconds ago   Up 34 seconds   9000/tcp, 0.0.0.0:9000->80/tcp   tp8-server-1 # 进入bash roy_chen@roy-chendeMacBook-Pro ~ % docker exec -it tp8-server-1 bash # 检查composer root@f22203ee0e1d:/var/www/html# composer -v    ______   / ____/___  ____ ___  ____  ____  ________  _____ / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/                     /_/ Composer version 2.8.5 2025-01-21 15:23:40
    # composer安装成功
    打开浏览器,请求:http://localhost:9000/,就可以看到TP8的欢迎页面,框架安装成功。 因为TP8框架是直接在docker中安装的,所以需要把docker的框架文件同步到本地 # 首先获取容器名称: docker ps -a # echo CONTAINER ID  IMAGE        COMMAND                  CREATED        STATUS        PORTS                            NAMES 96c5077a3b37  tp8-server  "docker-php-entrypoi…"  9 seconds ago  Up 8 seconds  9000/tcp, 0.0.0.0:9000->80/tcp  tp8-server-1 # 复制容器里的文件到本地 # docker cp your_container_name:/container/path/to/file ./local/path/to/file docker cp tp8-server-1:/var/www/html/thinkphp8 /Users/roy_chen/Desktop/private/code/docker/tp8
    在本地修改文件内容实时同步到docker(使用卷:volumes,来做同步) # 停止容器 ctrl + c # 修改compose.yaml services:   server:     build:       context: .     ports:       - 9000:80     volumes:       - .:/var/www/html
          # 注意:再次构建时,dockerfile可以屏蔽composer的thinkphp8的框架安装了。
    # 重新构建容器 docker compose up --build 再次访问localhost:9000,修改本地的代码,docker容器里的代码也会被修改。
    结束。


    注意事项: 之所以要在docker安装tp8框架,而不是直接从本地同步过去,是因为tp8要求php必须在8.0以上,我本地的是7.4,不具备框架安装条件。 docker版本为:4.37.2 (179585) Docker Engine配置(尽可能使用国内镜像源:https://www.coderjia.cn/archives/dba3f94c-a021-468a-8ac6-e840f85867ea) { "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "registry-mirrors": [ "https://hub.littlediary.cn", "https://docker.rainbond.cc", "https://docker.unsee.tech", "https://docker.m.daocloud.io", "https://hub.crdz.gq", "https://docker.nastool.de", "https://hub.firefly.store", "https://registry.dockermirror.com", "https://docker.1panelproxy.com", "https://hub.rat.dev", "https://docker.udayun.com", "https://docker.kejilion.pro", "https://dhub.kubesre.xyz", "https://docker.1panel.live", "https://dockerpull.org" ] }

标签:apt,server,Nginx,https,ThinkPHP8.0,Docker,php,docker,tp8
From: https://www.cnblogs.com/sherlock0223/p/18687803

相关文章

  • RockyLinux docker方式安装 rocket.chat
    主要参考官方文档https://docs.rocket.chat/docs/deploy-with-docker-docker-compose没有比这更好的了,本文能做的实际上也就是翻译翻译其中的内容。建议可以直接看原文如果需要使用移动端APP前提域名ssl整数安装Docker略:我自己都忘记自己当时怎么装的了...安装Docker......
  • docker:连接与登录私库、拉取镜像、上传镜像、保存容器为镜像、保存镜像为文件、读取文
    连接私库与修改dockerengine配置修改配置文件DockerEngine的配置通常存储在以下文件中:Linux系统:/etc/docker/daemon.jsonWindows系统:C:\ProgramData\docker\config\daemon.jsonmac系统:在dockerdesktop配置dockerengine中配置{"builder":{"gc":{......
  • docker-py:在Python中轻松使用Docker引擎API,更加灵活地管理和使用容器性
    Docker是一种流行的容器技术,让开发者能够在各种环境中快速地构建、部署和管理应用程序。而docker-py是一个强大的Python库,可以让你通过Python代码与Docker引擎API进行互动,实现与Docker命令相同的功能。本文将详细介绍docker-py的安装、使用以及一些常见的操作示例,帮助你更好地利用......
  • 【Docker项目实战】使用Docker部署LinkWarden书签服务
    【Docker项目实战】使用Docker部署LinkWarden书签服务一、LinkWarden介绍1.1LinkWarden简介1.2主要特点1.3主要使用场景二、本次实践规划2.1本地环境规划2.2本次实践介绍三、本地环境检查3.1检查Docker服务状态3.2检查Docker版本3.3检查doc......
  • Docker分层
    Docker的分层结构基础层(BaseLayer):这是镜像的最底层,通常由FROM指令指定。例如,FROMubuntu:20.04会拉取Ubuntu20.04的基础镜像作为第一层。中间层(IntermediateLayers):每一行Dockerfile指令(如RUN、COPY、ADD等)都会生成一个新的只读层。这些中间层叠加在基础层......
  • docker compose是什么?如何使用?
    一、什么是DockerCompose?DockerCompose是一个工具,用于定义和管理多容器的Docker应用。它允许你使用YAML文件来配置应用的服务、网络、卷等,然后用单个命令来启动和管理整个应用的多个容器。通过DockerCompose,你可以轻松地定义和部署一个由多个Docker容器组成的应用,而......
  • Windows 环境下 Docker Desktop + Kubernetes 部署项目指南
    Windows环境下DockerDesktop+Kubernetes部署项目指南一、环境准备二、安装与配置Kubernetes安装windows版的docker启动kubernetes安装windows版的kubectl工具下载k8s-for-docker-desktop启动KubernetesDashboard二、在Kubernetes上部署项目创建一个......
  • nginx配置之斜杠详解
    配置location、proxy_pass时,加“/”与不加“/”的区别,今天我们通过实操去验证下。以下测试都通过nginx代理访问地址:http://127.0.0.1/v1/pt/apply/page:第一种:location、proxy_pass都不加斜杠location/v1{proxy_passhttp://127.0.0.1:8899;}实际访问代理地址:http://1......
  • mac重启docker被识别成了恶意软件,如何解决?
    最终的结果:遇到的问题:晚上电脑重启后,发现一个这样的提示。用的好好的,怎么就出现了这样的问题呢。我的mac原本是打算直接安装桌面应用使用的,结果发现这个会占用很多资源,并且后面不想用的时候,卸载后的残留文件也会很多。所以,在安装上以后,没有使用就直接卸载了。问题分析:就是......
  • 制作docker 镜像上传到docker hub仓库
    注册dockerhub账号    https://hub.docker.com/  参照此篇:https://www.cnblogs.com/yjlch1016/p/8998479.htmldockerhub上创建仓库https://hub.docker.com/repositories本地制作镜像并上传在本地登陆 dockerhub帐号dockerlogin将容器commit成镜像,可以先用docker......