首页 > 编程语言 >在docker环境下配置php以及swole并创建hyperf项目

在docker环境下配置php以及swole并创建hyperf项目

时间:2023-06-12 18:45:25浏览次数:62  
标签:PHP RUN swole hyperf && docker php

在上篇文章中说了在linux环境下安装php8.2以及swoole扩展的问题,只是很多时候我们的环境都是在windows下进行的,但是在windows中安装swoole太麻烦了。这时候就到了我们的docker出场的时候了。

首先docker的安装,这个网上到处都是,就不多赘述了,贴一个docker官网地址:https:docker.com,顺便贴一个安装docker的---文档

下面正式开始,首先创建一个基于docker的项目目录,比如docker_hyperf,暂定目录结构如下:

-docker_hyperf
--php
---Dockerfile
--nginx
--mysql
--redis
--project
--docker-compose.yaml

首先来编写php目录下的Dockerfile,根据hyperf框架的要求,我们需要配置以下php版本以及扩展:(hyperf文档

PHP >= 8.0
以下任一网络引擎
Swoole PHP 扩展 >= 4.5,并关闭了 Short Name
Swow PHP 扩展
JSON PHP 扩展
Pcntl PHP 扩展(仅在 Swoole 引擎时)
OpenSSL PHP 扩展(如需要使用到 HTTPS)
PDO PHP 扩展 (如需要使用到 MySQL 客户端)
Redis PHP 扩展 (如需要使用到 Redis 客户端)
Protobuf PHP 扩展 (如需要使用到 gRPC 服务端或客户端)

所以开始编写Dockerfile:

FROM php:8.2-fpm
RUN apt-get update -y && apt-get upgrade -y
RUN pecl install redis && docker-php-ext-enable redis
RUN pecl install swoole && docker-php-ext-enable swoole && echo 'swoole.use_shortname=Off'>> /usr/local/etc/php/conf.d/docker-php-ext-swoole.ini
RUN pecl install protobuf && docker-php-ext-enable protobuf
RUN docker-php-ext-install pcntl && docker-php-ext-configure pcntl
EXPOSE 9000

 

因为php8.2-fpm已经默认带有json openssl pdo等扩展,所以我们只需要安装redis、swoole、pcntl、protobuf等扩展。

编写是否成功,我们进入到php目录下,进行一次build:

cd php
docker build .

执行上述命令后就会进行编译,编译完成后我们可以查看编译后的镜像:

docker image ls

如果编译成功后,我们会看到一个tag为none的镜像,为了方便使用,我们可以给他命名一个名字:

docker tag XXX php8 #xxx为镜像id前三位

在这儿,有一个问题,这边是以本地环境已经安装过composer作为前提的,如果本地没有composer,这时候需要在php中的Dockerfile中加入以下命令:

RUN apt-get install zlib1g-dev libzip-dev zip -y && docker-php-ext-install zip && docker-php-ext-enable zip #如果前面没有安装zip扩展,这儿需要安装,安装了请忽略
RUN curl -fsSL https://getcomposer.org/installer | php && chmod +x composer.phar && mv composer.phar /usr/local/bin/composer #composer安装
RUN cd /var/www && composer create-project hyperf/hyperf-skeleton hyperf -n

现在就是docker-compose.yaml文件的编写了:

version: '3.8'
networks:
  default:
    driver: bridge
services:
  php:
    build: ./php
    tty: true
    container_name: php8
    ports:
      - '9000:9000'
    volumes:
      - ./src:/var/www/hyperf
    networks:
      - default
  nginx:
    image: nginx:latest
    tty: true
    restart: unless-stopped
    volumes:
      - ./nginx/conf/default.conf:/etc/nginx/conf.d/default.conf
    ports:
      - '8080:80'
    networks:
      - default
  mysql:
    image: mysql:latest
    container_name: mysql8
    environment:
      TZ: Aisa/Shanghai
      MYSQL_DATABASE: hyperf_data
      MYSQL_USER: 'hyperf_user'
      MYSQL_PASSWORD: 'hyperf'
      MYSQL_ROOT_PASSWORD: 'root'
    restart: always
    tty: true
    ports:
      - '3307:3306'
    networks:
      - default
  redis:
    image: redis:latest
    container_name: redis5
    ports:
      - '6308:6309'
    volumes:
      - ./redis/data:/data
    networks:
      - default

大功告成。执行:

docker compose up

运行以后没有报错,可以通过"docker container ls"查看启动的容器。

是不是发现在docker里面做这些操作很简单。

 

标签:PHP,RUN,swole,hyperf,&&,docker,php
From: https://www.cnblogs.com/liusuifeng/p/17475837.html

相关文章

  • docker安装hbase
    1.拉去镜像拉去前可以使用dockersearchhbase所有你需要的镜像dockerpullharisekhon/hbase2.然后在进行启动dockerrun-d-hhbase\-p2181:2181-p8080:8080-p8085:8085\-p9090:9090-p9095:9095-p16000:16000\-p16010:16010-p16020:16020-p16201:1620......
  • rust Dockerfile
    Dockerfile:ARGBUILD_DIR=/rust/buildFROMrustasbuildARGBUILD_DIRWORKDIR${BUILD_DIR}COPYsrc./srcCOPYRocket.toml.COPYCargo.lock.COPYCargo.toml.RUNcargobuild-rFROMdebianasdeployARGBUILD_DIRWORKDIR/etc/rustRUNmkdirconfig......
  • 安装docker及docker常用的镜像命令
    1、安装docker启动docker 输入sudodockerrunhello-world测试是否成功 查看镜像:输入docker images 查看docker版本:docker --version   2、docker常用的镜像命令(1):列出所有运行的容器:docker ps(2)查看所有本地的主机镜像:docker images REPOSITORY:镜......
  • springboot kettle gralde dockerfile 多阶段构建
    dockerfileFROMopenjdk:8-jdk-alpineASTEMP_BUILD_IMAGEENVENVREFRESH_DATE2023-06-1215:00RUNset-eux&&sed-i's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g'/etc/apk/repositoriesRUNapkupdate&&apkadd--no-cacheb......
  • 14、Docker 的资源限制
    Docker的资源限制官方文档:https://docs.docker.com/config/containers/resource_constraints/namespace和controlgroup是docker的核心技术controlgroup是实现资源限制的核心技术,依赖于内核默认情况下,容器没有资源的使用限制,可以使用主机内核调度程序允许的尽可能多的资源其......
  • 12、容器单机编排工具Docker Compose安装
    容器单机编排工具DockerCompose安装DockerCompose离线安装,直接从github或国内镜像站下载安装对应版本https://github.com/docker/compose/releases找到docker-compose-linux-x86_64,下载拖入linux系统[root@ubuntu2004~]#mvdocker-compose-linux-x86_64-v2.12.0/usr/bin/d......
  • 【区块链】HyperLedger Besu Docker异地组网(续)
    最近有些朋友私信我,说之前《【区块链】HyperLedgerBesuDocker异地组网》中提到使用dockerswarm可以进行异地组网,但实际上在公网层面无法实现。嗯...的确之前我没有说清楚,其实在我实施的过程中还是遇到了比较多的问题的,譬如:国内三大网络运营商对于公网接入会有不同的网络策略;......
  • How to Clear Logs of Running Docker Containers
    HowtoClearLogsofRunningDockerContainers https://www.howtogeek.com/devops/how-to-clear-logs-of-running-docker-containers/UnderstandingtheProblemDockercollectslogsfromthestandardoutputanderrorstreamsofcontainerforegroundprocesses.......
  • Jenkins + Docker 一键自动化部署 Spring Boot 项目,步骤齐全,少走坑路!
    本文章实现最简单全面的Jenkins+docker+springboot一键自动部署项目,步骤齐全,少走坑路。环境:centos7+git(gitee)简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。推荐一个开源免费的SpringBoot实战项目:https://......
  • Docker runc容器逃逸漏洞(CVE-2021-30465)
    --原文件的名称并授权cd/tmpmvrunc.amd64runc&&chmod+xrunc--查看runc的位置whichrunc--将备份runc文件cd/usr/bincpruncrunc.bak--复制新的runc到usr/bincp/tmp/runc/usr/bin/systemctlstopdockersystemctlstartdocker......