此Docker镜像提供了精简的Nginx设置,针对本地PHP开发环境进行了优化。
它旨在与https://github.com/wayofdev/docker-php-dev%E5%8F%8A%E5%85%B6%E4%BB%96(WOD)%E9%95%9C%E5%83%8F%E6%97%A0%E7%BC%9D%E9%9B%86%E6%88%90%EF%BC%8C%E4%B8%BAWeb%E9%A1%B9%E7%9B%AE%E6%9E%84%E5%BB%BA%E9%AB%98%E6%95%88%E7%9A%84%E6%9C%AC%E5%9C%B0%E5%BC%80%E5%8F%91%E7%94%9F%E6%80%81%E7%B3%BB%E7%BB%9F%E3%80%82
k8s-alpine变体,用于在本地测试Kubernetes设置适用于开发Laravel应用、Symfony项目或任何PHP-based Web服务,在本地环境中构建接近生产环境的开发环境。
提供创建、测试和调试Web应用的本地基础环境。
如果您喜欢/使用此镜像,请考虑⭐️为其加星。感谢!
| 变体 | 描述 |
|---|---|
| dev-alpine | 用于本地开发环境,使用80和443端口。 |
| k8s-alpine | 针对k8s和本地环境优化,使用8880和8443端口,无root权限。 |
bashdocker pull wayofdev/nginx:k8s-alpine-latest
将k8s-alpine-latest替换为您需要的类型和标签。
以下是典型设置的docker-compose.yml示例:
yamlservices: app: image: wayofdev/php-dev:8.3-fpm-alpine-latest container_name: ${COMPOSE_PROJECT_NAME}-app restart: on-failure networks: - default - shared depends_on: - database links: - database volumes: - ./.github/assets:/assets:rw,cached - ./app:/app:rw,cached - ./.env:/app/.env - ~/.composer:/.composer - ~/.ssh:/home/www-data/.ssh environment: FAKETIME: '+2h' XDEBUG_MODE: '${XDEBUG_MODE:-off}' PHIVE_HOME: /app/.phive dns: - 8.8.8.8 extra_hosts: - 'host.docker.internal:host-gateway' web: image: wayofdev/nginx:k8s-alpine-latest container_name: ${COMPOSE_PROJECT_NAME}-web restart: on-failure networks: - default - shared depends_on: - app links: - app volumes: - ./app:/app:rw,cached - ./.env:/app/.env labels: - traefik.enable=true - traefik.http.routers.api-${COMPOSE_PROJECT_NAME}-secure.rule=Host(`api.${COMPOSE_PROJECT_NAME}.docker`) - traefik.http.routers.api-${COMPOSE_PROJECT_NAME}-secure.entrypoints=websecure - traefik.http.routers.api-${COMPOSE_PROJECT_NAME}-secure.tls=true - traefik.http.services.api-${COMPOSE_PROJECT_NAME}-secure.loadbalancer.server.port=8880 - traefik.docker.network=network.${SHARED_SERVICES_NAMESPACE}
此配置包含
wayofdev/php-dev镜像的app服务,用于PHP处理。实际示例
有关如何在Docker Compose设置中使用此镜像的全面实际示例,请参考https://github.com/wayofdev/laravel-starter-tpl%E4%BB%93%E5%BA%93%E3%80%82%E8%AF%A5%E6%A8%A1%E6%9D%BF%E4%B8%BALaravel%E9%A1%B9%E7%9B%AE%E6%8F%90%E4%BE%9B%E4%BA%86%E4%BD%BF%E7%94%A8%60wayofdev/php-dev%60%E9%95%9C%E5%83%8F%E7%9A%84%E5%AE%8C%E6%95%B4%E9%85%8D%E7%BD%AE%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E3%80%82
Nginx镜像预配置为针对PHP应用的最佳性能,但您可以根据具体需求进一步自定义。
默认配置通过Ansible模板生成,包括:
虽然配置主要通过Ansible模板管理,但您可以通过以下方式进一步自定义:
环境变量:镜像使用以下环境变量:
| 变量 | 默认值 | 描述 |
|---|---|---|
| PHP_UPSTREAM_CONTAINER | app | PHP-FPM容器名称 |
| PHP_UPSTREAM_PORT | 9000 | PHP-FPM容器端口 |
在docker-compose.yml中设置这些变量:
yamlservices: web: image: wayofdev/nginx:k8s-alpine-latest environment: - PHP_UPSTREAM_CONTAINER=my-php-app - PHP_UPSTREAM_PORT=9001
卷挂载:如需更广泛的自定义,可挂载自己的配置文件:
yamlservices: web: image: wayofdev/nginx:k8s-alpine-latest volumes: - ./custom-nginx.conf:/etc/nginx/nginx.conf - ./custom-default.conf:/etc/nginx/conf.d/default.conf
镜像包含自签名SSL证书。如需使用自己的证书:
yamlservices: web: image: wayofdev/nginx:k8s-alpine-latest volumes: - ./certs/cert.pem:/etc/nginx/ssl/cert.pem - ./certs/key.pem:/etc/nginx/ssl/key.pem
如需高级配置:
src目录中的Ansible模板make generate重新生成Dockerfiles该项目使用一系列工具进行开发和测试。Makefile提供了简化开发流程的各种命令。
克隆仓库:
bashgit clone git@github.com:wayofdev/docker-nginx.git && \ cd docker-nginx
Ansible用于生成Dockerfiles和配置。从Jinja模板源代码生成可分发的Dockerfiles:
bashmake generate
构建默认镜像:
bashmake build
此命令构建Makefile中IMAGE_TEMPLATE变量指定的镜像。默认设置为k8s-alpine。
构建特定镜像:
bashmake build IMAGE_TEMPLATE="k8s-alpine"
将8.3-fpm-alpine替换为所需的PHP版本、类型和操作系统。
构建所有镜像:
bashmake build IMAGE_TEMPLATE="k8s-alpine" make build IMAGE_TEMPLATE="dev-alpine"
这些命令将构建所有支持的镜像变体。
该项目采用测试方法确保Docker镜像的质量和功能。主要测试工具是https://github.com/aelsabbahy/goss/tree/master/extras/dgoss%EF%BC%8C%E7%94%A8%E4%BA%8E%E6%B5%8B%E8%AF%95Docker%E5%AE%B9%E5%99%A8%E3%80%82
可使用以下命令运行测试:
测试默认镜像:
bashmake test
此命令测试Makefile中IMAGE_TEMPLATE变量指定的镜像(默认是k8s-alpine)。
测试特定镜像:
bashmake test IMAGE_TEMPLATE="k8s-alpine"
将k8s-alpine替换为所需的镜像类型和操作系统。
测试所有镜像:
bashmake test IMAGE_TEMPLATE="k8s-alpine" make test IMAGE_TEMPLATE="dev-alpine"
测试配置在每个镜像变体的goss.yaml文件中定义,指定要运行的测试,包括:
运行make test命令时,将执行以下步骤:
goss.yaml中定义的测试。该项目有安全策略。
感谢您考虑为wayofdev社区做出贡献!我们欢迎各种形式的贡献。如果您想:
欢迎参与。贡献前,请查阅我们的贡献指南。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务