madsem/phpdock

基于PHP项目的简单Docker开发环境

维护者

详细信息

github.com/madsem/phpdock

源代码

问题

安装量: 3,651

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

语言:Shell

v3.0.0 2024-06-06 10:27 UTC

This package is auto-updated.

Last update: 2024-09-06 11:00:53 UTC


README

基于Alpine Linux的Docker Compose环境。

专为快速且简单的macOS PHP开发环境设计。
在10秒内(在您已下载基本镜像之后)启动新的环境

包括
php-fpmMySqlSinglestoreRedisNginxMailhogComposernodenpmyarn

默认使用Singlestore数据库。

本地地址

Docker配置

可以在.env.phpdock中配置Docker环境。
轻松交换镜像,并从应用程序的.env中独立配置Docker。

.env.phpdock中使用以下任意一项来自定义您的环境

  • PHP-fpm: 8.3-latest
  • MySql服务器:5.7至8.x之间的任何有效mysql标签
  • singlestore:始终使用最新版本
  • redis:始终使用最新版本

要进一步自定义,您可以始终编辑docker-compose.yml

安装

composer require madsem/phpdock --dev

然后运行vendor/bin/phpdock publish,将docker/文件夹和phpdock文件发布到您的项目目录。

然后您可以使用以下方式使用可执行的shell脚本

vendor/bin/phpdock <command>

创建别名

# bash
alias phpdock="./vendor/bin/phpdock"
 
# fish
alias phpdock "./vendor/bin/phpdock"

启动新项目

phpdock build

这将为您的项目构建容器。

容器准备好后,运行phpdock up来启动容器。

然后您可以根据以下方式登录到appnginxmysqlredis服务

phpdock ssh <service name>

要停止但不销毁您的工作,请运行phpdock down
或要销毁容器、镜像和相关卷,请运行phpdock destroy

在配置更改后重新构建容器,请运行phpdock rebuild

# rebuild everything
phpdock rebuild
phpdock rebuild all

# rebuild only a particular service
phpdock rebuild app
phpdock rebuild web

更新phpDock

composer require madsem/phpdock --dev
phpdock update

这将发布新的phpdock文件,并将旧文件和docker目录追加.bak

有关更多命令,请运行phpdock help

对于Laravel项目的示例

使用phpDock默认配置的Laravel环境文件

# Project ENV
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=phpdock
DB_USERNAME=phpdock
DB_PASSWORD=secret

REDIS_HOST=redis
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_DRIVER=redis

MAIL_HOST=mail
MAIL_PORT=1025

MySql配置

app:
    build:
      context: ./docker/app
      dockerfile: Dockerfile
      args:
        - MY_PHP_VERSION=${PHP_VERSION}
    volumes:
      - php-sock:/socket
      - ./:/var/www/html
    networks:
      - phpdock
    depends_on:
      mysql:
        condition: service_healthy
mysql:
    build:
      context: ./docker/mysql
      dockerfile: Dockerfile
      args:
        - MY_MYSQL_VERSION=${MYSQL_VERSION}
    ports:
      - ${DB_PORT:-3306}:3306
    volumes:
      - dbdata:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "${DB_PASS:-secret}"
      MYSQL_DATABASE: "${DB_NAME:-phpdock}"
      MYSQL_USER: "${DB_USER:-phpdock}"
      MYSQL_PASSWORD: "${DB_PASS:-secret}"
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
    networks:
      - phpdock
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 45s
      interval: 10s
      retries: 5

数据库管理器

连接到数据库管理软件,如TablePlus,如下所示
table plus config

phpDock基础镜像包含的扩展

[PHP Modules]
bcmath
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
imagick
intl
json
libxml
maxminddb
mbstring
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
SimpleXML
soap
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

安装自定义PHP扩展

phpDock使用https://github.com/mlocati/docker-php-extension-installer#supported-php-extensions来安装扩展。

此包检测您的PHP版本并安装正确的版本。只需将额外的扩展或修改添加到docker/app/Dockerfile中,如下所示

RUN install-php-extensions \
  csv \
  grpc \
  protobuf

鸣谢 :shipit: