php开发环境laradock配置
git clone https://github.com/laradock/laradock
流
graph TB
clone_pro(获取laradock项目)
==>edit_env(配置当前项目的.env文件)
==>compose_up(启动项目并生成对应的项目images)
==>edit_env
compose_up
==>push(可推送到公共开发环境,其他成员直接使用该镜像)
配置当前项目的.env文件,主要涉及的东西
# 项目路径
APP_CODE_PATH_HOST=/vagrant_data
# 隐射到容器路径
APP_CODE_PATH_CONTAINER=/vagrant_data
# 国内加速
CHANGE_SOURCE=true
# php版本
PHP_VERSION=7.1
# 安装docker的ip,如果是linux就是本机的ip, 不该也没关系,基本上就是容器的Gateway
DOCKER_HOST_IP=192.168.1.214
# 项目名称,变更名称之后才会重新构建,构建完成之后会生成对应名称的images镜像
COMPOSE_PROJECT_NAME=workphp71
# 开启WORKSPACE的SSH,密钥项目 workspace 目录下的密钥文件 insecure_id_rsa,文件的权限重新设置为600
WORKSPACE_INSTALL_WORKSPACE_SSH=true
# 把 node 和 npm/yarn 都关闭了,下载国内很慢
WORKSPACE_INSTALL_NODE=false
WORKSPACE_INSTALL_PNPM=false
WORKSPACE_INSTALL_YARN=false
# 搜索 =true 的值,不需要不理解的都改为 false 关闭
# 使用caddy
# 配置caddy配置文件: laradock/caddy/caddy/Caddyfile
:80 {
root * /vagrant_data/php_db/dbninja
php_fastcgi php-fpm:9000
file_server
}
# 启动caddy
docker-compose up -d caddy
# 直接访问实体机的80端口即可
# 查看生成的镜像
docker images|grep workphp71
# 在容器运行的时候,删除没有运行容器的卷
docker volume prune
# 删除批量多余镜像, 删除包含<none>的image
docker rmi $(docker images | grep '<none>' | awk '{print $3}')
# 删除包含laradock的image
docker rmi $(docker images | grep 'laradock' | awk '{print $3}')
# 找到fpm修改扩展
### PHP_FPM ###############################################
# 修改增加扩展之后, 重新构建, 使用 build 构建对应的服务
docker-compose build php-fpm
# 构建完成之后,提示类似:
Successfully built 684adacb8bd0
Successfully tagged workphp71_php-fpm:latest
# 重新启动
docker-compose down
docker-compose up -d caddy
pull很慢,可修改对应的Dockerfile
# 如 php-fpm/Dockerfile
- FROM laradock/php-fpm:${BASE_IMAGE_TAG_PREFIX}-${LARADOCK_PHP_VERSION}
+ FROM hub-mirror.c.163.com/laradock/php-fpm:${BASE_IMAGE_TAG_PREFIX}-${LARADOCK_PHP_VERSION}
# 无需映射xdebug端口
# 方案一:
# 修改 docker-compose.yml, 注释掉
- ports:
- - "${PHP_FPM_XDEBUG_PORT}:9003"
+ # ports:
+ # - "${PHP_FPM_XDEBUG_PORT}:9003"
# 搜索host.docker.internal全局进行替换ip(fpm的Gateway),vscode配置的hostname也使用这个ip
-xdebug.remote_host="host.docker.internal"
+xdebug.remote_host="172.24.0.1"
# 重构并重新启动
docker-compose down
docker-compose build php-fpm
# docker-compose build workspace 多试几次,网不行
docker-compose up -d caddy
# 方案二: 如果也是死活调试不上,可以尝试以下容器内文件配置修改: /usr/local/etc/php/conf.d/xdebug.ini
xdebug.mode=debug
; If enabled, Xdebug will first try to connect to the client that made the HTTP request. It checks the $_SERVER['HTTP_X_FORWARDED_FOR'] and $_SERVER['REMOTE_ADDR'] variables to find out which hostname or IP address to use.
xdebug.discover_client_host=1
;优先使用REMOTE_ADDR
xdebug.client_discovery_header=REMOTE_ADDR
xdebug.mode=develop,debug,profile,trace
xdebug.client_port = 9003
xdebug.show_local_vars = Off
xdebug.show_error_trace = Off
xdebug.force_display_errors = Off
xdebug.start_with_request = yes
xdebug.remote_handler=dbgp
# vscode配置(fpm的Gateway):
"hostname": "172.24.0.1",
# 重启容器你懂得
容器类通信和连接
# php-fpm的连接在caddy里面
php_fastcgi php-fpm:9000
# 通过 inspect 命令 查看容器的 Aliases 别名参数列表,进行容器内连接:
docker inspect laradock80_redis_1
# 查看Networks里面的laradock80_backend里面的Aliases
"Aliases": [
"6a8848828e49",
"redis"
],
修改实例
diff --git a/.gitignore b/.gitignore
index d2c5d26..fe701b2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,3 +25,5 @@
docker-compose.custom.yml
.DS_Store
+/.vscode/
+/.vscode/*
diff --git a/caddy/caddy/Caddyfile b/caddy/caddy/Caddyfile
index 2fab010..68bb412 100644
--- a/caddy/caddy/Caddyfile
+++ b/caddy/caddy/Caddyfile
@@ -1,9 +1,30 @@
-# Docs: https://caddyserver.com/docs/caddyfile
-laradock.test {
- root * /var/www/public
+:80 {
+ root * /home/jcleng/桌面/work/www/tp6/public
php_fastcgi php-fpm:9000
- file_server
+ route {
+ # 静态文件整个目录是直接(按文件)输出
+ file_server /assets/*
+ file_server /uploads/*
+
+ # 静态解析网站图标
+ file_server /favicon.ico
+
+ # 静态解析 搜索引擎文件
+ file_server /robots.txt
+
+ # 先重写前台,再重写后台
+ # 前台重写
+ @front {
+ not file
+ path_regexp front (/.+)
+ }
+ rewrite @front /index.php{uri}
+ # @admin {
+ # not file
+ # path_regexp admin (NaUMFbCdWg\.php)(/.+)
+ # }
+ # 后台重写
+ # rewrite @admin /NaUMFbCdWg.php{re.admin.2}
+ }
- encode gzip
- tls internal
}
diff --git a/docker-compose.yml b/docker-compose.yml
index 70cef48..eb99d64 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -290,8 +290,8 @@ services:
- ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
- docker-in-docker:/certs/client
- ports:
- - "${PHP_FPM_XDEBUG_PORT}:9003"
+ # ports:
+ # - "${PHP_FPM_XDEBUG_PORT}:9003"
expose:
- "9000"
extra_hosts:
@@ -627,7 +627,7 @@ services:
build:
context: ./postgres-postgis
args:
- - POSTGIS_VERSION=${POSTGIS_VERSION}
+ - POSTGIS_VERSION=${POSTGIS_VERSION}
- INSTALL_PGSQL_HTTP_FOR_POSTGIS13=${POSTGIS_INSTALL_PGSQL_HTTP_FOR_POSTGIS13}
volumes:
- ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data
diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile
index 57578eb..06fc694 100644
--- a/php-fpm/Dockerfile
+++ b/php-fpm/Dockerfile
@@ -14,7 +14,7 @@
ARG LARADOCK_PHP_VERSION
ARG BASE_IMAGE_TAG_PREFIX=latest
-FROM laradock/php-fpm:${BASE_IMAGE_TAG_PREFIX}-${LARADOCK_PHP_VERSION}
+FROM hub-mirror.c.163.com/laradock/php-fpm:${BASE_IMAGE_TAG_PREFIX}-${LARADOCK_PHP_VERSION}
LABEL maintainer="Mahmoud Zalt <[email protected]>"
@@ -1027,7 +1027,7 @@ RUN if [ ${INSTALL_AUDIOWAVEFORM} = true ]; then \
&& make \
&& make install \
;fi
-
+
#####################################
# wkhtmltopdf:
diff --git a/php-fpm/xdebug.ini b/php-fpm/xdebug.ini
index ba50bb8..d3d6d50 100644
--- a/php-fpm/xdebug.ini
+++ b/php-fpm/xdebug.ini
@@ -1,6 +1,6 @@
; NOTE: The actual debug.so extention is NOT SET HERE but rather (/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini)
-xdebug.remote_host="host.docker.internal"
+xdebug.remote_host="172.18.0.1"
xdebug.remote_connect_back=0
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
diff --git a/workspace/xdebug.ini b/workspace/xdebug.ini
index ba50bb8..d3d6d50 100644
--- a/workspace/xdebug.ini
+++ b/workspace/xdebug.ini
@@ -1,6 +1,6 @@
; NOTE: The actual debug.so extention is NOT SET HERE but rather (/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini)
-xdebug.remote_host="host.docker.internal"
+xdebug.remote_host="172.18.0.1"
xdebug.remote_connect_back=0
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
开启php错误显示
# php-fpm\laravel.ini
- display_errors=Off
+ display_errors=On
# 需要重新 build
docker-compose build php-fpm
配置vscode连接remote ssh(测试只有workspace的容器支持vscode安装codeserver)
# /home/jcleng/.ssh/config
# chmod 600 /home/jcleng/桌面/work/docker/Laradock/workspace/insecure_id_rsa
Host 127.0.0.1
HostName 127.0.0.1
User root
Port 2222
IdentityFile "/home/jcleng/桌面/work/docker/Laradock/workspace/insecure_id_rsa"
vscode使用docker的php
vi /usr/lib/systemd/system/docker.service
dockerd或者dockerd-current增加参数 -H tcp://0.0.0.0:2375
sudo systemctl daemon-reload
sudo systemctl restart docker
systemctl status docker
# 通用配置
export DOCKER_HOST=tcp://0.0.0.0:2375
alias php="docker exec -it dev_php php"
# vscode里面配置,容器名称是dev_php
"php.validate.executablePath": "DOCKER_HOST=tcp://0.0.0.0:2375 && docker exec -it dev_php php"
# 命令行参数使用
docker -H tcp://0.0.0.0:2375 ps