如何使用 Docker Compose 创建 PHP 开发环境:DigitalOcean Workshop Kit

<$>[info] [标签 How to Create PHP Development Environments with Docker Compose Workshop Kit Materials ) 此研讨会套件旨在帮助技术受众熟悉 Docker Compose,并学习如何使用容器为 Laravel应用程序设置工作开发环境。

目标是为演讲者提供一套完整的资源,以主办一个活动,并在PHP开发环境的背景下提供(https://www.digitalocean.com/community/tech_talks/how-to-create-php-developer-environments-with-docker-compose)的介绍演讲。

  • **** 滑行和扬声器注释** ,包括运行可选直播演示的命令. 这段话持续了大约40分钟。
  • **A ** GitHub source** 包含演示应用代码和使PHP开发环境与Docker和Docker Confose相接并运行所必须的额外文件.
  • 联合国 这个教程可以让一个用户通过 travellist_ demo Laravel 应用程序在 Docker Compose 的容器上运行 。 .

本指南旨在以额外的细节和澄清来补充谈话演示。

介绍

此教程旨在配合 [如何用 Docker Compose Slide Deck 创建 PHP 开发环境 (https://docs.google.com/presentation/d/1UAF9Ryq4SxEMPVqI-B6Y-oGJ4JK95GmfXmFdLNl09nc/edit?usp=sharing) 的幻灯片和扬声符, 将演示您如何与 Docker 和 Docker Compose 一起获得演示 Laravel 应用程序并运行, 将使用我们关于 [如何用 Docker Compose on Ubuntu 20.04] (https://andsky.com/tech/tutorials/how-to-install-and-set-up-laravel-with-docker-compose-on-ubuntu-20-04) 的指南中更为详细的讨论的设置 .

注:本材料旨在展示如何使用Docker Compose创建PHP开发环境,尽管我们的演示包括在LEMP服务器上运行的Laravel应用程序,但鼓励读者修改和调整包含的设置以满足自己的需求。

前提条件

要遵循本教程,您将需要:

第1步:下载Demo应用程序

要開始,請下載 [Travellist Laravel Demo] (https://github.com/do-community/travellist-laravel-demo) 應用程式的「教程-4.0.3」版本,其中包含本工作坊中使用的應用程式檔案和 Docker Compose 設定。

1curl -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-4.0.3.zip --output travellist.zip

接下来,安装unzip实用程序,如果它尚未安装在本地机器或开发服务器上:

1sudo apt install unzip

解开包并进入新创建的目录:

1unzip travellist.zip
2cd travellist-laravel-demo-tutorial-4.0.3

现在,你可以运行一个ls命令来检查克隆存储库的内容:

1ls -l --group-directories-first

你会收到这样的输出:

 1[label ansible-laravel-demo]
 2total 256
 3drwxrwxr-x 6 sammy sammy 4096 mei 14 16:16 app
 4drwxrwxr-x 3 sammy sammy 4096 mei 14 16:16 bootstrap
 5drwxrwxr-x 2 sammy sammy 4096 mei 14 16:16 config
 6drwxrwxr-x 5 sammy sammy 4096 mei 14 16:16 database
 7drwxrwxr-x 4 sammy sammy 4096 mei 14 16:16 docker-compose
 8drwxrwxr-x 5 sammy sammy 4096 mei 14 16:16 public
 9drwxrwxr-x 6 sammy sammy 4096 mei 14 16:16 resources
10drwxrwxr-x 2 sammy sammy 4096 mei 14 16:16 routes
11drwxrwxr-x 5 sammy sammy 4096 mei 14 16:16 storage
12drwxrwxr-x 4 sammy sammy 4096 mei 14 16:16 tests
13-rwxr-xr-x 1 sammy sammy 1686 mei 14 16:16 artisan
14-rw-rw-r-- 1 sammy sammy 1501 mei 14 16:16 composer.json
15-rw-rw-r-- 1 sammy sammy 181665 mei 14 16:16 composer.lock
16-rw-rw-r-- 1 sammy sammy 1016 mei 14 16:16 docker-compose.yml
17-rw-rw-r-- 1 sammy sammy 737 mei 14 16:16 Dockerfile
18-rw-rw-r-- 1 sammy sammy 1013 mei 14 16:16 package.json
19-rw-rw-r-- 1 sammy sammy 1405 mei 14 16:16 phpunit.xml
20-rw-rw-r-- 1 sammy sammy 814 mei 14 16:16 readme.md
21-rw-rw-r-- 1 sammy sammy 563 mei 14 16:16 server.php
22-rw-rw-r-- 1 sammy sammy 538 mei 14 16:16 webpack.mix.js

以下是我们正在使用的 Docker Compose 设置的相关目录和文件:

  • docker-compose/ — 包含用于设置容器化环境的文件, 如 Nginx 配置文件和应用程序的 MySQL 垃圾堆 。
  • " docker-compose.yml " -- -- 在这里,我们界定我们需要的所有服务:app'、web'和`db'。 这里也建立了共享的卷和网络.
  • Dockerfile'——这定义了基于php-fpm'的自定义应用程序图像。 虽然web'和db'服务以默认图像为基础,但`app'服务需要额外的设置步骤,因此,我们正在为这一服务集装箱创建定制图像。 .

所有剩余的文件都是应用程序的一部分。

步骤 2 — 设置应用程序的 .env 文件

现在您将使用包含的.env.example 文件作为基础创建一个新的 .env 文件. 由于 Laravel 使用了 Docker Compose 也支持的点 env 文件,因此在此设置的值将在构建时可用,当您提交环境时,并将用于设置数据库服务容器。

1cp .env.example .env

因为这些设置正在应用于一个孤立的开发环境,不需要在这个文件中更改数据库凭据,但如果你愿意,你可以自由地这样做。

 1[label .env]
 2APP_NAME=Travellist
 3APP_ENV=dev
 4APP_KEY=
 5APP_DEBUG=true
 6APP_URL=http://localhost:8000
 7
 8LOG_CHANNEL=stack
 9
10DB_CONNECTION=mysql
11DB_HOST=db
12DB_PORT=3306
13DB_DATABASE=travellist
14DB_USERNAME=travellist_user
15DB_PASSWORD=password
16
17BROADCAST_DRIVER=log
18CACHE_DRIVER=file
19QUEUE_CONNECTION=sync
20SESSION_DRIVER=cookie
21SESSION_LIFETIME=120
22
23REDIS_HOST=127.0.0.1
24REDIS_PASSWORD=null
25REDIS_PORT=6379
26
27MAIL_DRIVER=smtp
28MAIL_HOST=smtp.mailtrap.io
29MAIL_PORT=2525
30MAIL_USERNAME=null
31MAIL_PASSWORD=null
32MAIL_ENCRYPTION=null
33
34AWS_ACCESS_KEY_ID=
35AWS_SECRET_ACCESS_KEY=
36AWS_DEFAULT_REGION=us-east-1
37AWS_BUCKET=
38
39PUSHER_APP_ID=
40PUSHER_APP_KEY=
41PUSHER_APP_SECRET=
42PUSHER_APP_CLUSTER=mt1
43
44MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
45MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

一旦您满意您的.env 文件,您应该继续运行 Docker Compose,如下次会话所述。

第3步:运行Docker构成

一旦你有你的 .env 文件,你可以带来你的环境:

1docker-compose up -d

此命令将在分离模式下执行 Docker Compose,这意味着它将在背景中运行. 此命令在首次执行时可能需要几分钟才能运行,因为它将下载并构建应用服务图像。

1[secondary_label Output]
2Creating network "travellist-laravel-demo-tutorial-403_travellist" with driver "bridge"
3Creating travellist-db    ... done
4Creating travellist-app   ... done
5Creating travellist-nginx ... done

为了验证您的服务的状态,您可以运行:

1docker-compose ps

你会收到这样的输出:

1[secondary_label Output]
2      Name Command State Ports        
3--------------------------------------------------------------------------------
4travellist-app docker-php-entrypoint php-fpm Up 9000/tcp            
5travellist-db docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp 
6travellist-nginx   /docker-entrypoint.sh ngin ... Up 0.0.0.0:8000->80/tcp

您的容器化PHP开发环境正在运行,但仍然需要几个步骤,以便您可以从浏览器访问应用程序。

步骤4 – 完成设置应用程序

现在你有一个可以处理PHP脚本的开发环境,你可以使用composer来安装应用程序依赖性. 要在容器内执行命令,你可以使用docker-compose exec命令,然后是服务容器的名称和你想要执行的命令。

以下命令将运行composer install在安装PHP的app服务容器上:

1docker-compose exec app composer install

依赖性安装后,您需要使用工匠Laravel命令行工具生成一个独特的应用程序密钥:

1docker-compose exec app php artisan key:generate
1[secondary_label Output]
2Application key set successfully.

现在您可以通过将浏览器指向本地主机,如果您在本地机器上运行此设置,或在开发服务器上运行此设备的远程服务器域名或IP地址来访问演示应用程序。

1http://localhost:8000

你会看到这样的页面:

Laravel Travellist Demo

通过在您的浏览器上显示此页面,您已经成功设置了您的应用程序。

Docker 构成快速参考

在本节中,您将找到用于管理集装箱环境的主要 Docker Compose 命令的简要参考,这些命令应该从您设置了 docker-compose.yml 文件的相同目录中执行。

建设

构建与当前 docker-compose.yml 文件相关的任何自定义图像,而不会带来环境。

1docker-compose build

《上》《上》

自动创建自定义图像,当您没有缓存时,以及当您对所参照的 Dockerfile 进行更改时。

1docker-compose up

PS

类似于docker ps,显示与当前docker-compose.yml文件相关的活跃服务的状态。

1docker-compose ps

《exec》

在指定的服务上执行命令。

1docker-compose exec service-name command

◎「停止」

停止活跃环境,同时保持任何分配的资源:容器,卷和网络。

1docker-compose stop

开始

创建以前用停止命令中断的环境。

1docker-compose start

名称:《Logs》

显示来自活跃服务的最新日志。

1docker-compose logs

顶部

显示在指定的服务中运行的流程。

1docker-compose top service-name

《下》《下》

将集装箱环境与任何分配的资源一起降低。

1docker-compose down

有关每个可用的 Docker Compose 命令的更多信息,请参阅他们的 官方文档

结论

本指南补充了《如何用Docker构成研讨会套件创建PHP开发环境》(https://docs.google.com/presentation/d/1zGFt32gtphr3U5ASUDrSJbH7cA9PuASygnL-tVUnNH8/edit?usp=sharing),并附有演示文稿(https://github.com/do-community/travellist-laravel-demo)包含所有必要的文件,以跟踪本研讨会的演示组件。

有关 Docker Compose 包装 PHP 环境的更深入的指南,请参阅我们的教程 如何在 Ubuntu 20.04 上安装和设置 Laravel with Docker Compose

Published At
Categories with 技术
comments powered by Disqus