Skip to content

Commit 46a8aeb

Browse files
committed
feat: 增加 .bash_aliases 示例配置
1 parent c451cf1 commit 46a8aeb

2 files changed

Lines changed: 177 additions & 5 deletions

File tree

.bash_aliases.example

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# docker-php-env docker-compose.yml 绝对路径
2+
DPE_COMPOSE=/home/suyar/repo/suyar/github/docker-php-env/docker-compose.yml
3+
# docker-php-env 挂载的 DIR_SOURCE 绝对路径
4+
DPE_SOURCE=/home/suyar/repo
5+
6+
dpe_workdir() {
7+
local cwd=$PWD
8+
local workdir
9+
local subdir
10+
11+
if [[ ${cwd} =~ ^${DPE_SOURCE}/?$ ]]; then
12+
workdir=/www
13+
elif [[ ${cwd} =~ ^${DPE_SOURCE}/.+ ]]; then
14+
subdir=${cwd#${DPE_SOURCE}}
15+
if [[ -n $subdir ]]; then
16+
workdir=/www${subdir}
17+
fi
18+
fi
19+
20+
echo $workdir
21+
}
22+
23+
tophp() {
24+
if [[ $# -lt 1 ]]; then
25+
local version=php81
26+
else
27+
local version=$1
28+
fi
29+
30+
local workdir=$(dpe_workdir)
31+
32+
if [[ -z $workdir ]]; then
33+
workdir=/www
34+
fi
35+
36+
docker compose -f "${DPE_COMPOSE}" exec -w "${workdir}" "${version}" bash
37+
}
38+
39+
alias tophp81='tophp php81'
40+
alias tophp80='tophp php80'
41+
alias tophp74='tophp php74'
42+
alias tophp73='tophp php73'
43+
44+
tonginx() {
45+
local workdir=$(dpe_workdir)
46+
47+
if [[ -z $workdir ]]; then
48+
workdir=/www
49+
fi
50+
51+
docker compose -f "${DPE_COMPOSE}" exec -w "${workdir}" nginx bash
52+
}
53+
54+
tomysql() {
55+
if [[ $# -lt 1 ]]; then
56+
local version=mysql8
57+
else
58+
local version=$1
59+
fi
60+
61+
docker compose -f "${DPE_COMPOSE}" exec "${version}" bash
62+
}
63+
64+
alias tomysql5='tomysql mysql5'
65+
alias tomysql8='tomysql mysql8'
66+
67+
php() {
68+
local workdir=$(dpe_workdir)
69+
local version
70+
local params
71+
72+
if [[ -z $workdir ]]; then
73+
echo "当前目录不属于 ${DPE_SOURCE}"
74+
return
75+
fi
76+
77+
if [[ $# -ge 1 && $1 =~ ^php[0-9]{2}$ ]]; then
78+
version=$1
79+
params=${@:2}
80+
else
81+
version=php81
82+
params=$@
83+
fi
84+
85+
docker compose -f "${DPE_COMPOSE}" exec -w "${workdir}" "${version}" php ${params}
86+
}
87+
88+
alias php81='php php81'
89+
alias php80='php php80'
90+
alias php74='php php74'
91+
alias php73='php php73'

README.md

Lines changed: 86 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
- [3.2 安装 PHP 扩展](#32-安装-php-扩展)
4848
- [3.3 在 PHP 容器中执行命令](#33-在-php-容器中执行命令)
4949
- [3.4 使用 composer](#34-使用-composer)
50+
- [3.5 快捷操作](#35-快捷操作)
5051
- [4. 常见问题](#4-常见问题)
5152
- [4.1 如何在其他容器中请求 nginx 配置的域名](#41-如何在其他容器中请求-nginx-配置的域名)
5253
- [4.2 在 PHP 容器中使用 cron 定时任务](#42-在-php-容器中使用-cron-定时任务)
@@ -101,6 +102,7 @@
101102
│   ├── phpmyadmin phpMyAdmin 配置目录
102103
│   ├── rabbitmq Rabbitmq 配置目录
103104
│   └── redis Redis 配置目录
105+
├── .bash_aliases.example .bash_aliases 示例配置
104106
├── .env.example .env 变量示例配置
105107
├── docker-compose.yml.example docker-compose 示例
106108
├── dpe.sh 初始化脚本
@@ -127,7 +129,7 @@
127129

128130
- MacOS
129131

130-
- 没有苹果电脑故无法尝试,后续补充
132+
- 未尝试
131133

132134
2. `clone` 项目
133135

@@ -250,7 +252,7 @@ Zend OPcache
250252
251253
支持的扩展在这边可以在这边查看:[docker-php-extension-installer](https://github.com/mlocati/docker-php-extension-installer#supported-php-extensions)。
252254
253-
> 这种方式安装扩展和 DNMP 的方式不同,通过这种方式安装的扩展,在容器销毁后重新创建,不会保留,需要重新安装。
255+
> 这种方式安装扩展和 `DNMP` 的方式不同,通过这种方式安装的扩展,在容器销毁后重新创建,不会保留,需要重新安装。
254256
255257
### 3.3 在 PHP 容器中执行命令
256258
@@ -259,16 +261,95 @@ Zend OPcache
259261
root@08240e17170e:/www# php -v
260262
```
261263
262-
这里移除了 DNMP 中使用 `alias` 的方式在 Host 主机中执行 PHP 命令。
263-
264264
### 3.4 使用 composer
265265
266266
```
267267
# sudo docker-compose exec php81 bash
268268
root@08240e17170e:/www# composer install
269269
```
270270
271-
这里移除了 DNMP 中使用 `alias` 的方式在 Host 主机中执行 `composer` 命令。
271+
### 3.5 快捷操作
272+
273+
1. 把 [.bash_aliases.example](.bash_aliases.example) 的内容拷贝到 `~/.bash_aliases` 或 `~/.bashrc`
274+
2. 修改 `~/.bash_aliases` 的变量 `DPE_COMPOSE` 和 `DPE_SOURCE`
275+
276+
```
277+
# docker-php-env docker-compose.yml 绝对路径
278+
DPE_COMPOSE=/home/suyar/repo/suyar/github/docker-php-env/docker-compose.yml
279+
# docker-php-env 挂载的 DIR_SOURCE 绝对路径
280+
DPE_SOURCE=/home/suyar/repo
281+
282+
...
283+
```
284+
285+
3. 开始使用快捷命令
286+
287+
```
288+
# 进入 php81 容器,自动识别挂载目录中的相对路径
289+
$ tophp
290+
# 进入 php81 容器,自动识别挂载目录中的相对路径
291+
$ tophp81
292+
# 进入 php80 容器,自动识别挂载目录中的相对路径
293+
$ tophp80
294+
# 进入 php74 容器,自动识别挂载目录中的相对路径
295+
$ tophp74
296+
# 进入 php73 容器,自动识别挂载目录中的相对路径
297+
$ tophp73
298+
299+
# 进入 nginx 容器,自动识别挂载目录中的相对路径
300+
$ tonginx
301+
302+
# 进入 mysql8 容器
303+
$ tomysql
304+
# 进入 mysql8 容器
305+
$ tomysql8
306+
# 进入 mysql5 容器
307+
$ tomysql5
308+
309+
# 在宿主机执行 php 命令,自动识别挂载目录中的相对路径
310+
$ php
311+
$ php81
312+
$ php80
313+
$ php74
314+
$ php73
315+
```
316+
317+
> 关于 `自动识别挂载目录中的相对路径` 的效果如下:
318+
319+
① 假设我的 `.env` 配置如下:
320+
321+
```
322+
...
323+
# 挂载到容器的目录
324+
DIR_SOURCE=/home/repo
325+
...
326+
```
327+
328+
② 假设我的 `~/.bash_aliases` 变量配置如下:
329+
330+
```
331+
# docker-php-env 挂载的 DIR_SOURCE 绝对路径
332+
DPE_SOURCE=/home/repo
333+
```
334+
335+
③ 假设我宿主机中,当前目录为 **`/home/repo/laravel`**
336+
337+
那么我在宿主机执行 `tophp` 命令后:
338+
339+
```
340+
$ tophp
341+
root@0f70cb169d72:/www/laravel#
342+
```
343+
344+
可以看到,这时候默认进入到 `laravel` 目录。
345+
346+
如果我在宿主机执行 `php -v`:
347+
348+
```
349+
$ php artisan
350+
```
351+
352+
那么实际上,会在容器中的 `/www/laravel` 去执行 `php artisan` 命令。
272353
273354
## 4 常见问题
274355

0 commit comments

Comments
 (0)