Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker PHP 最佳实践

Docker PHP 最佳实践

原创
作者头像
康怀帅
发布于 2018-03-11 04:27:26
发布于 2018-03-11 04:27:26
2.2K0
举报
文章被收录于专栏:康怀帅的专栏康怀帅的专栏

Docker 化 PHP 项目最佳实践

完全使用 Docker 开发、部署 PHP 项目

一、开发

环境

1. 新建 PHP 项目

并初始化 git 仓库。

代码语言:txt
AI代码解释
复制
$ cd lnmp

$ mkdir -p app/demo

$ cd app/demo

$ git init

$ git remote add origin git@github.com:username/repo.git

$ git checkout -b dev

$ echo -e "<?php\nphpinfo();" >> app/demo/index.php

2. 新增 NGINX 配置

参考示例配置文件在 config/nginx 新建 *.conf NGINX 配置文件

3. 启动 khs1994-docker/lnmp

代码语言:txt
AI代码解释
复制
$ ./lnmp-docker.sh development

4. 浏览器验证

浏览器打开页面,出现 php 信息

5. PHPStorm 打开已有项目

6. 设置 CLI

PHPStorm 设置-> Languages & ... -> PHP -> CLI Interpreter -> 点击后边三个点

代码语言:txt
AI代码解释
复制
 -> `左上角添加` -> `From Docker ...` -> `Remote` -> `选择 Docker`
代码语言:txt
AI代码解释
复制
 -> `Image name` -> `选择 khs1994/php-fpm:7.2.3-alpine3.7`
代码语言:txt
AI代码解释
复制
 -> `点击 OK 确认`

7. 设置 Xdebug

请查看 https://github.com/khs1994-docker/lnmp/blob/master/docs/xdebug.md

8. 引入 Composer 依赖

容器化 PHPer 常用命令请查看 https://github.com/khs1994-docker/lnmp/blob/master/docs/command.md

代码语言:txt
AI代码解释
复制
$ lnmp-composer require phpunit/phpunit

9. 编写 PHP 代码

10. 编写 PHPUnit 测试代码

11. 使用 PHPUnit 测试

使用 PHPStorm

PHPStorm 设置-> Languages & ... -> PHP ->Test Frameworks -> 左上角添加

代码语言:txt
AI代码解释
复制
          -> `PHPUnit by Remote Interpreter` -> `选择第五步添加的 Docker 镜像`
代码语言:txt
AI代码解释
复制
          -> `点击 OK` -> `PHPUnit Library` -> `选择 Use Composer autoloader`
代码语言:txt
AI代码解释
复制
          -> `Path to script` -> `填写 /opt/project/vendor/autoload.php`
代码语言:txt
AI代码解释
复制
          -> `点击右边刷新` -> `点击 OK 确认`

在测试函数名单击右键 run FunName 开始测试。

使用命令行
代码语言:txt
AI代码解释
复制
$ lnmp-phpunit

在笔记本需要与数据库交互的测试流程暂未发布。

12. 测试构建 PHP 及 NGINX 镜像

将 PHP 项目打入镜像,镜像中严禁包含配置文件

自行修改 .env docker-compose.yml 文件,保留所需的 PHP 版本,其他的注释

代码语言:txt
AI代码解释
复制
$ docker-compose build

13. 将项目提交到 Git

代码语言:txt
AI代码解释
复制
$ git add .

$ git commit -m "First"

$ git push origin dev:dev

CI/CD 服务搭建

khs1994.com CI/CD 由 khs1994-docker/ci 提供。

Drone + Gogs 暂不支持挂载本地 Volume

本例 CI/CD 由 Travis 提供。

二、测试(全自动)

1. Git 通知到 CI/CD 服务器

  • Travis CI (公共的、仅支持 GitHub CI/CD)
  • Drone (私有化 CI/CD)

2. CI/CD 服务器测试

三、开发、测试循环

git 添加 tag

  • 只有添加了 tag 的代码才能部署到生产环境
  • Docker 镜像名必须包含 git tag
  • CI/CD 服务器构建并推送镜像到 Docker 仓库。

四、部署 (全自动)

生产环境部署 khs1994-docker/lnmp 请查看 https://github.com/khs1994-docker/lnmp/tree/master/docs/production

1. Docker 私有仓库通知到指定地址

2. Swarm mode 或 k8s 集群调用相应的 API 自动更新服务

Swarm mode
代码语言:txt
AI代码解释
复制
#
# 管理员通过 API 新增配置文件、密钥, 并更新
#

$ docker config create nginx_khs1994_com_conf_vN config/nginx/khs1994.com.conf

#
# 更新配置的时候也可以同时更新镜像
#

$ docker service update \
    --config-rm nginx_khs1994_com_conf \
    --config-add source=nginx_khs1994_com_conf_vN,target=/etc/nginx/conf.d/khs1994.com.conf \
    --image khs1994/nginx:swarm-alpine-NEW_GIT_TAG lnmp_nginx \
    lnmp_nginx

$ docker secret create khs1994_com_ssl_crt_vN config/nginx/ssl/khs1994.com.crt

$ docker service update \
    --secret-rm khs1994_com_ssl_crt \
    --secret-add source=khs1994_com_ssl_crt_vN,target=/etc/nginx/conf.d/ssl/khs1994.com.crt \
    lnmp_nginx

#
# 更新镜像
#

$ docker service update --image khs1994/nginx:swarm-alpine-NEW_GIT_TAG lnmp_nginx

#
# 其他项也可以更新,请查看帮助信息
#

$ docker service update --help
k8s

3. 完成部署

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker 私有仓库安装配置 (Registry v2)
使用 Docker Compose + Docker machine 配置一个 Docker 私有仓库。
康怀帅
2018/02/28
2K0
LNMP Docker 安装配置
康怀帅
2017/12/27
1.7K0
Travis CI 构建 GitBook 实践
本文只提供思路,具体实现请查看本人博客的其他文章。务必对 Travis CI 基础知识 了解之后再阅读本文。 刚开始在 Travis CI 中从零开始搭建环境,全部执行时间为 三分半,将环境部署进 Docker, docker run XXX 之后直接开始生成,时间缩短为 一分半。 准备 GitBook 项目文件 新建 .travis 文件夹 复制根目录 book.json 文件 编写 Dockerfile 文件 FROM node:9-alpine ENV TZ=Asia/Shanghai WORKD
康怀帅
2018/02/28
1.1K0
Docker + Drone CI/CD 实践
测试环境:macOS + Drone + Gogs + Docker Registry 生产环境:Debian 9 + Drone + GitHub + 腾讯云容器服务 官方网站:http://drone.io/ GitHub:https://github.com/drone GitHub: https://github.com/khs1994-docker/ci GitHub: https://github.com/khs1994-drone-ci-examples 安装 请使用或升级到最新 0.8 版本
康怀帅
2018/02/28
1.8K0
在生产环境使用 Docker
本文是对官方文档的总结与备注。 官方文档:https://docs.docker.com/engine/userguide/ 配置 Docker 手动启动 Docker 这一部分内容详情可以查看:https://www.khs1994.com/docker/dockerd.html $ sudo docked 自动启动容器 https://docs.docker.com/engine/admin/start-containers-automatically/ $ docker run --restart n
康怀帅
2018/02/28
1.1K0
Docker 远程连接 -- dockerd 命令详解
配置 TLS 实现安全的 Docker 远程连接。 GitHub:https://github.com/khs1994-docker/dockerd-tls 本机:macOS 远程机:使用 VirtualBox 虚拟 CoreOS (IP 192.168.57.110) 目标:能在 macOS 远程操作 CoreOS。(注意不是 SSH 远程登录)。dockerd 命令仅能在 Linux 下使用。 官方文档:https://docs.docker.com/edge/engine/reference/comm
康怀帅
2018/02/28
24.7K2
你必须知道的 17 个 Composer 最佳实践(已更新至 22 个)
尽管大多数 PHP 开发人员都知道如何使用 Composer ,但并不是所有的人都在有效地或以最好的方式使用它。 所以我决定总结一些对我日常工作流程很重要的东西。 大部分技巧的理念是「 Play it safe 」,这意味着如果有更多的方法来处理某些事情,我会使用最不容易出错的方法。
做个快乐的码农
2021/11/29
8.2K0
你必须知道的 17 个 Composer 最佳实践(已更新至 22 个)
WSL 快速搭建 LNMP 环境
康怀帅
2017/12/27
4.6K1
Docker容器化部署,这些最佳实践你不可不知
Docker 作为一种开源的容器化技术,在当今的软件开发和部署领域中发挥着至关重要的作用。它具有诸多显著优势,为开发者和运维人员带来了极大的便利。
天创项目管理分享
2024/11/20
1.4K0
Docker容器化部署,这些最佳实践你不可不知
使用 Docker 安装 Gogs
使用 Docker Compose 安装 Gogs。 GitHub:https://github.com/khs1994-docker/ci docker-compose.yaml 编写 docker-compose.yml 文件 version: '3' services: gogs: image: gogs/gogs ports: - "22:22" - "10080:3000" volumes: - ./data:/data
康怀帅
2018/02/28
2.2K0
基于 Drone + Gogs 构建私有 CI/CD 平台 | Kubernetes 篇
一、基于 Drone + Gogs 构建私有 CI/CD 平台 | Docker 篇
AlicFeng
2021/08/01
1.2K0
基于 Drone + Gogs 构建私有 CI/CD 平台 | Kubernetes 篇
Docker Swarm mode 详解
使用 docker swarm Dcoker 内置的集群管理的工具,Docker CE 1.12+。注意与旧的 Docker Swarm 区分开来。 OS: CoreOS 1562.1.0 3个节点 OS: macOS + Docker Machine Docker Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令 docker swarm。 有关集群的 Docker 命令如下:
康怀帅
2018/02/28
2.4K0
Docker Compose 项目打包部署
参考官方:https://docs.docker.com/compose/compose-file/
IT茂茂
2020/03/19
5.5K0
基于gitea+drone完成小团队的CI/CD
持续集成和构建的工具有很多,除了著名的 Jenkins,Travis,CircleCI,还有最近比较热门的 Github Action 和 Gitlab CI/CD。但是这些工具面对私人项目不是要收费就是占用大量服务器资源,作为个人开发者的私人项目如果想要使用并不友好。那么开源免费的 Drone CI 是个不错选择,它不但非常轻量,而且十分强大。并可以结合私有代码仓库自动编译、构建服务,几行脚本即可实现自动化部署。本文讲述 Drone CI 的具体实践,结合Gitea,怎么在 VPS 里从零开始搭建一个基于 Gitea + Drone CI 的持续集成系统。
mikelLam
2022/10/31
2.8K0
基于gitea+drone完成小团队的CI/CD
Docker 从入门到实践
来源:Linux学习 ID:LoveLinux1024 一般说来 SPA 的项目我们只要启一个静态文件 Server 就可以了,但是针对传统项目就不一样了,一个项目会依赖很多服务端程序。之前我们的开发模式是在一台开发机上部署开发环境,所有人都在这台开发机上使用 Samba 连接开发。老式开发是没什么问题的,但是前端因为引入了编译流程,增加了 Webpack 打包构建的行为,当多人共同开发的时候经常会因为内存爆满进程被杀导致打包失败。痛定思痛后为了解决这个问题,我决定将 Docker 引入我们的开发环境,通
小小科
2018/06/20
1.2K0
PHP 依赖管理工具 Composer
GitHub:https://github.com/composer/composer 官方网站:https://getcomposer.org/ 开发一个 SDK GitHub:https://github.com/khs1994-php/php-sdk-example { "name": "khs1994/qq-login", "description": "QQ Login SDK", "keywords": [ "qq", "oauth" ], "homepage
康怀帅
2018/02/28
1.1K0
这才是现代PHP该有的样子
标题真的很自恋,不是吗?是啊,就是。虽然我使用了PHP多年,但我怎样陈述出这项工作的最佳实践和工具?我不能我会尝试这统也在不断变化。
猿哥
2019/07/25
1.3K0
基于 Docker 的 Flarum 轻论坛部署方案
Flarum 是一个简洁的轻论坛程序,交互体验做的十分不错,也有良好的插件扩展机制。接触过的人可能知道,它目前还在 beta,在功能更新和迭代方面不算稳定,部署、修改与定制功能更是一件麻烦的事情。
zgq354
2020/06/22
4K0
php应用容器化部署实践
目前市场上 php 仍有一席之地。本文章将探讨如何将 php 应用容器化并迁移部署到 TKE。
谢正伟
2021/05/08
3.6K0
php应用容器化部署实践
看吧,这就是现代化 PHP 该有的样子
这是一篇社区协同翻译的文章,已完成翻译,更多信息请点击 协同翻译介绍 。 讨论请前往:https://laravel-china.org/topics/8690 文章的标题真是自命不凡,不是吗?是的,虽然我们使用 PHP 工作很多年,但是我们能够说出哪些是最佳实践和最好的工具吗?我不能,但是我将要去这么做。 我看到开发者们使用 PHP 工作的方式正在发生真正的变化,不仅因为 PHP 新的版本和自身逐步的完善,让 PHP 语言发生了巨大变化,变得更加成熟和健壮,更重要的是整个生态系统也在不断地改变。 为了
前端教程
2018/03/27
1.6K0
看吧,这就是现代化 PHP 该有的样子
相关推荐
Docker 私有仓库安装配置 (Registry v2)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档