Laradock,一个PHP开发不得不知的Docker环境神器!

今天是元宵节,祝大家元宵节快乐!新年已经接近尾声,作为成年人,该上班的还得上班,该学习的也还得学习。今天为大家分享一些平时我使用 Laradock 时的一些笔记,希望对你的工作有些许帮助。

安装步骤

  1. 首先将 Laradock 项目代码克隆到本地:
git clone https://github.com/Laradock/laradock.git
  1. 进入 laradock 目录将 env-example 重命名为 .env:
cp env-example .env

然后在 .env 中修改镜像构建过程中 Linux 软件源为国内镜像以免镜像构建过程中出现网络超时问题:

CHANGE_SOURCE
# If you need to change the sources (i.e. to China), set CHANGE_SOURCE to true
CHANGE_SOURCE=true
# Set CHANGE_SOURCE and UBUNTU_SOURCE option if you want to change the Ubuntu system sources.list file.
UBUNTU_SOURCE=aliyun
  1. 构建镜像 & 启动容器:
docker-compose up -d nginx mysql redis beanstalkd

nginx 镜像构建在 php-fpm 之上,php-fpm 构建在 workspace 之上,所以启动 nginx 会先启动 workspace 和 php-fpm。

如果指定端口已经被占用,运行上述命令会报错,关闭相应的服务再重新运行上述命令即可。

如果在 Windows 系统中上述指令构建镜像过程中报错:

/tmp/sources.sh: not found

可参考这个 issue 解决:https://github.com/laradock/laradock/issues/2450

  1. 打开 Laravel 项目的 .env 文件并添加如下配置:
DB_HOST=mysql
# 这里填写容器的名称(比如:laradock_redis_1)或者容器的 ip 地址(比如:172.28.0.5)也可以
REDIS_HOST=redis
QUEUE_HOST=beanstalkd

其他命令

  • 构建镜像 & 启动容器
docker-compose up -d nginx mysql redis beanstalkd
  • 重新构建容器
# 比如:重新构建 mysql 容器
docker-compose build mysql
  • 增加一个项目之后,重启 Docker 的 nginx
docker-compose up -d nginx
  • 列出容器
# 列出正在运行的容器
docker ps

#
 如果你只想看当前这个项目的容器,你也可以执行下面这个命令
docker-compose ps
  • 重启当前这个项目中的所有容器(如果你不想一个一个的开启每一个容器,可以方便的执行这条命令)
docker-compose restart
  • 关闭容器
# 关闭所有正在运行的容器
docker-compose stop

#
 停止单个容器
docker-compose stop {container-name}
  • 进入容器
# 使用下面的命令进入任意容器
docker-compose exec {container-name} bash

#
 进入 mysql 容器
docker-compose exec mysql bash

#
 进入 mysql 并在 mysql 容器中使用命令提示符
docker-compose exec mysql mysql -u homestead -psecret

#
 进入 workspace 容器,执行比如(Artisan, Composer, PHPUnit, Gulp, ...)等命令
docker-compose exec workspace bash
  • 删除所有现有容器
docker-compose down
  • 查看日志文件
    NGINX 日志文件存储在logs/nginx目录中
    但是要查看其他容器(Mysql,PHP-FPM,…)的日志,可以运行以下命令
docker-compose logs {container-name}

docker-compose logs -f {container-name}

在 laradock 中安装 swoole

在本地安装的话,以 Laradock 为例,需要在 laradock 目录下的 .env 中将下面两行配置值设置为 true:

WORKSPACE_INSTALL_SWOOLE=true
PHP_FPM_INSTALL_SWOOLE=true

然后运行 docker-compose build php-fpm workspace 重新构建 Docker 容器,构建完成后重启这两个容器,进入 workspace 容器,运行 php -m 查看 Swoole 是否安装成功,如果扩展列表包含 swoole 则表示安装成功。

如果启动了 laradock 但是却发现 phpredis 扩展一直无法安装,则可以考虑直接在 workspace 中安装 phpredis 扩展

我使用的是 php 7.3.29 版本,目前扩展安装的默认目录为 /usr/lib/php/20180731/


# 先到 /tmp 目录中去
cd /tmp

# 下载 phpredis 源码文件到 `/tmp` 目录中
curl -L -o /tmp/redis.tar.gz "https://codeload.github.com/phpredis/phpredis/tar.gz/5.0.2"
# 或者
wget https://github.com/phpredis/phpredis/archive/refs/tags/5.0.2.tar.gz

# 解压压缩包
tar -xzvf redis.tar.gz

# 切换到 phpredis 解压后的文件夹目录中
cd phpredis-5.0.2

# 查看 phpize 文件路径,比如这里是 /usr/bin/phpize
which phpize

# 使用 phpize 生成 configure 配置文件
/usr/bin/phpize

# 查看 php-config 文件路径,比如这里的路径为 /usr/bin/php-config
which php-config

# 设置配置项
./configure --with-php-config=/usr/bin/php-config

# 编译安装
make && make install

# 编译完成之后会提示 php 扩展所在的目录,比如这里是 /usr/lib/php/20180731/

# 查看当前 php 版本所加载的 php.ini 文件所在位置,比如这里是 /etc/php/7.3/cli/php.ini
php --ini

# 编辑 php.ini 配置文件添加 phpredis 扩展
vim /etc/php/7.3/cli/php.ini

# 在配置文件中添加扩展(可以直接在配置文件的最后一行添加)
extension=/usr/lib/php/20180731/redis.so

# 重启 php 之后查看扩展安装是否成功(我没有重启 php 发现扩展也可以查看出来)
php -m | grep redis
php --ri redis

其他需要注意事项

laravel 框架中,如果配置不生效,请注意清理下 laravel 的缓存

php artisan config:clear

检查下是否开启了 5200 端口

安装 netstat 命令,查看端口
apt-get update
apt-get install net-tools
netstat -ntlp

netstat -ant | grep 5200

端口映射开启方式

  1. 进入 laradock/docker-compose.yml

workspace 下的 ports 中新增

  ports:
    - "${WORKSPACE_SSH_PORT}:22"
    - "${WORKSPACE_VUE_CLI_SERVE_HOST_PORT}:8080"
    - "${WORKSPACE_VUE_CLI_UI_HOST_PORT}:8000"
    - "${WORKSPACE_PORT}:5200"     /**这一行为新增的行,也可以直接在这里加 5200:5200 这样加了之后,就不再需要在 .env 中设置变量了**/
  1. 进入 .envWORKSPACE 下最后一行增加

WORKSPACE_AST_VERSION=1.0.3
WORKSPACE_VUE_CLI_SERVE_HOST_PORT=8080
WORKSPACE_VUE_CLI_UI_HOST_PORT=8001
WORKSPACE_INSTALL_GIT_PROMPT=false
WORKSPACE_PORT=5200  /**这一行为新增的行,其实就是设置步骤 1 中的变量**/

有些博客说还需要在 laradock/workspace/Dockerfile 文件的最后添加一行,申明开放端口: EXPOSE 5200,这里,我并没有做这一步,同样也成功了,如果你没有成功,你加上去之后再试试看吧

  1. 强制重新创建 workspace 容器
docker-compose up -d --force-recreate workspace
  1. 重启 docker-compose
docker-compose restart 

docker ps

  1. 测试端口是否开通成功
telnet 127.0.0.1 5200

# 或者直接查看容器的端口列表中是否含有你所需要开通的端口
docker port {container-name}
# 比如,如下
docker port laradock_workspace_1

最后说个事
公号算法变了,为防止看不到我的更新
大家帮忙加个星标
点击上方的公众号卡片
再点右上角三个点
就能看到设为星标
算我跪下来求你们

✍ 作者简介:

95后某跨境电商企业程序猿,白天搬砖码代码,晚上自媒体写文章,持续更新编程、科技、互联网相关文章,偶尔也会无痛呻吟,感慨人生百态。自己淋过雨,所以也想为别人撑撑伞。

💡 往期精选:

windows10专业版64位系统安装docker并使用laradock搭建laravel环境

Docker 安装 ElasticSearch 和 Kibana

原文始发于微信公众号(浅墨觅尘往):Laradock,一个PHP开发不得不知的Docker环境神器!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/222019.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!