- File list -
- Dockerfile
- docker-compose.yml
- mrzenw.nginx.conf
- php.ini
- xdebug.ini
- .vscode/launch.json
version: "3" | |
# https://dev.to/_mertsimsek/using-xdebug-with-docker-2k8o | |
services: | |
php-fpm-dev: | |
build: | |
# context - the directory where the Dockerfile is | |
context: ./. | |
image: mrzenw--image-php | |
container_name: mrzenw--container--php-fpm | |
environment: | |
- MRZENW_ENV=DEV | |
volumes: | |
# app | |
- ./src:/var/www/app/src | |
- ./public_html:/var/www/app/public_html | |
# dev | |
- ./log:/var/www/app/log | |
# php | |
- ./php.ini:/usr/local/etc/php/php.ini | |
- ./xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini | |
nginx: | |
image: nginx:latest | |
container_name: mrzenw--container--nginx | |
ports: | |
- "8888:80" | |
volumes: | |
- ./src:/var/www/app/src | |
- ./public_html:/var/www/app/public_html | |
- ./mrzenw.nginx.conf:/etc/nginx/conf.d/default.conf | |
depends_on: | |
- php-fpm-dev |
FROM php:7.4-fpm-alpine | |
WORKDIR /var/www/app | |
RUN apk update \ | |
&& apk add --no-cache libzip-dev git mysql-client curl libmcrypt libmcrypt-dev openssh-client icu-dev \ | |
libxml2-dev freetype-dev libpng-dev libjpeg-turbo-dev g++ make autoconf \ | |
&& docker-php-source extract \ | |
&& pecl install xdebug redis \ | |
&& docker-php-ext-enable xdebug redis \ | |
&& docker-php-source delete \ | |
&& docker-php-ext-install mysqli pdo_mysql soap intl zip \ | |
# && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ | |
# && echo "xdebug.remote_autostart=on" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ | |
# && echo "xdebug.remote_port=9001" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ | |
# && echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ | |
# && echo "xdebug.remote_connect_back=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ | |
# && echo "xdebug.idekey=mrzenw" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ | |
# && echo "xdebug.remote_host=host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ | |
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ | |
&& rm -rf /tmp/* | |
CMD ["php-fpm", "-F"] | |
EXPOSE 9000 |
{ | |
// !!! Place this file to the location: `.vscode/launch.json` | |
// Use IntelliSense to learn about possible attributes. | |
// Hover to view descriptions of existing attributes. | |
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 | |
"version": "0.2.0", | |
"configurations": [ | |
{ | |
"name": "Listen for Xdebug", | |
"type": "php", | |
"request": "launch", | |
// "hostname": "127.0.0.1", | |
"port": 9003, | |
"pathMappings": { | |
"/var/www/app/public_html": "${workspaceFolder}/public_html", | |
"/var/www/app/src": "${workspaceFolder}/src", | |
} | |
}, | |
{ | |
"name": "Launch currently open script", | |
"type": "php", | |
"request": "launch", | |
"program": "${file}", | |
"cwd": "${fileDirname}/html", | |
"port": 0, | |
"runtimeArgs": [ | |
"-dxdebug.start_with_request=yes" | |
], | |
"env": { | |
"XDEBUG_MODE": "debug,develop", | |
"XDEBUG_CONFIG": "client_port=${port}" | |
} | |
}, | |
{ | |
"name": "Launch Built-in web server", | |
"type": "php", | |
"request": "launch", | |
"runtimeArgs": [ | |
"-dxdebug.mode=debug", | |
"-dxdebug.start_with_request=yes", | |
"-S", | |
"localhost:0" | |
], | |
"program": "dev-server.php", | |
"cwd": "${workspaceRoot}", | |
"port": 9003, | |
"serverReadyAction": { | |
"pattern": "Development Server \\(http://localhost:([0-9]+)\\) started", | |
"uriFormat": "http://localhost:%s", | |
"action": "openExternally" | |
} | |
} | |
] | |
} |
server { | |
listen 80; | |
server_name web; | |
root /var/www/app/public_html; | |
location / { | |
# try to serve file directly, fallback to index.php | |
try_files $uri /index.php$is_args$args; | |
} | |
location ~ ^/index\.php(/|$) { | |
fastcgi_pass php-fpm-dev:9000; | |
fastcgi_split_path_info ^(.+\.php)(/.*)$; | |
include fastcgi_params; | |
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; | |
fastcgi_param DOCUMENT_ROOT $realpath_root; | |
fastcgi_buffer_size 128k; | |
fastcgi_buffers 4 256k; | |
fastcgi_busy_buffers_size 256k; | |
internal; | |
} | |
location ~ \.php$ { | |
return 404; | |
} | |
error_log /var/log/nginx/project_error.log; | |
access_log /var/log/nginx/project_access.log; | |
} |
[PHP] | |
engine = On | |
short_open_tag = On | |
precision = 14 | |
output_buffering = Off | |
zlib.output_compression = Off | |
implicit_flush = Off | |
unserialize_callback_func = | |
serialize_precision = 100 | |
disable_functions = dl | |
disable_classes = | |
zend.enable_gc = On | |
expose_php = Off | |
max_execution_time = 30 | |
max_input_time = 60 | |
memory_limit = 256M | |
error_reporting = E_ALL & ~E_NOTICE | |
display_errors = On | |
display_startup_errors = Off | |
log_errors = On | |
log_errors_max_len = 1024 | |
ignore_repeated_errors = Off | |
ignore_repeated_source = Off | |
report_memleaks = On | |
track_errors = Off | |
html_errors = On | |
error_log = /var/www/app/log/php_error.log | |
variables_order = "EGPCS" | |
request_order = "GP" | |
register_argc_argv = On | |
auto_globals_jit = On | |
post_max_size = 64M | |
auto_prepend_file = | |
auto_append_file = | |
default_mimetype = "text/html" | |
default_charset = "UTF-8" | |
include_path = ".:/opt/php72/lib/php" | |
doc_root = | |
user_dir = | |
enable_dl = Off | |
file_uploads = On | |
upload_max_filesize = 64M | |
max_file_uploads = 20 | |
allow_url_fopen = On | |
allow_url_include = On | |
default_socket_timeout | |
cli_server.color | |
date.timezone = Asia/Riyadh | |
pdo_mysql.cache_size = 2000 | |
pdo_mysql.default_soc | |
sendmail_path = /usr/sbin/sendmail -t | |
mail.add_x_header | |
sql.safe_mode = | |
odbc.allow_persistent = Off | |
odbc.check_persistent = Off | |
odbc.max_persistent = -1 | |
odbc.max_links = -1 | |
odbc.defaultlrl = 4096 | |
odbc.defaultbinmode | |
ibase.allow_persistent = 1 | |
ibase.max_persistent = -1 | |
ibase.max_links = -1 | |
ibase.timestampformat = "%Y-%m-%d %H:%M:%S" | |
ibase.dateformat = "%Y-%m-%d" | |
ibase.timeformat = "%H:%M" | |
mysqli.max_persistent = -1 | |
mysqli.allow_persistent = Off | |
mysqli.max_links = -1 | |
mysqli.cache_size = 2000 | |
mysqli.default_port = 3306 | |
mysqli.default_socket = | |
mysqli.default_host = | |
mysqli.default_user = | |
mysqli.default_pw = | |
mysqli.reconnect = | |
mysqlnd.collect_statistics = Off | |
mysqlnd.collect_memory_statistics = | |
pgsql.allow_persistent = Off | |
pgsql.auto_reset_persistent = Off | |
pgsql.max_persistent = -1 | |
pgsql.max_links = -1 | |
pgsql.ignore_notice = 0 | |
pgsql.log_notice | |
bcmath.scale | |
session.save_handler = files | |
session.save_path = "/tmp" | |
session.use_strict_mode = 0 | |
session.use_cookies = 1 | |
session.use_only_cookies = 1 | |
session.name = PHPSESSID | |
session.auto_start = 0 | |
session.cookie_lifetime = 0 | |
session.cookie_path = / | |
session.cookie_domain = | |
session.cookie_httponly = | |
session.serialize_handler = php | |
session.gc_probability = 1 | |
session.gc_divisor = 100 | |
session.gc_maxlifetime = 1440 | |
session.referer_check = | |
session.cache_limiter = nocache | |
session.cache_expire = 180 | |
session.use_trans_sid = 0 | |
session.hash_function = 0 | |
session.hash_bits_per_character = 5 | |
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fields" | |
zend.assertions | |
tidy.clean_output = | |
soap.wsdl_cache_enabled=1 | |
soap.wsdl_cache_dir="/tmp" | |
soap.wsdl_cache_ttl=86400 | |
soap.wsdl_cache_limit | |
ldap.max_links |
; [Xdebug] | |
; xdebug.start_with_request=1 | |
; xdebug.remote_autostart=1 | |
; xdebug.remote_enable=on | |
; xdebug.default_enable=1 | |
; xdebug.remote_host=host.docker.internal | |
; xdebug.remote_port=9001 | |
; xdebug.remote_connect_back=0 | |
; xdebug.profiler_enable=0 | |
; xdebug.remote_log="/tmp/xdebug.log" | |
; xdebug.profiler_output_dir="/var/www/html/profiler" | |
; xdebug.profiler_output_name="cachegrind.out.%p" | |
; xdebug.cli_color=1 | |
; xdebug.profiler_append=1 | |
; xdebug.remote_handler=dbgp | |
; xdebug.idekey=mrzenw | |
[Xdebug] | |
; https://dev.to/_mertsimsek/using-xdebug-with-docker-2k8o | |
; https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug | |
; https://xdebug.org/docs/step_debug#starting | |
xdebug.mode=debug | |
xdebug.client_port=9003 | |
xdebug.client_host=host.docker.internal | |
xdebug.remote_handler=dbgp | |
xdebug.start_with_request=yes | |
xdebug.discover_client_host=0 | |
xdebug.idekey=mrzenw | |
xdebug.show_error_trace = 1 | |
xdebug.max_nesting_level=250 | |
xdebug.var_display_max_depth=10 | |
xdebug.log=/var/www/app/log/xdebug.log |