&引用;“404未找到”;对于Nginx+;PHP-FPM+;Docker中的MySql和子文件夹中的Opencart
我有一个Nginx、PHP-FPM和MySQL在docker容器中运行。我想在“public”子文件夹中安装Opencart 3,以便将来开发。 但当我尝试安装OC3时,nginx出现了404错误。同时,服务器在工作,容器在相互ping,我可以显示phpinfo(),很明显一切都正常工作。 错在哪里 docker-compose.yml&引用;“404未找到”;对于Nginx+;PHP-FPM+;Docker中的MySql和子文件夹中的Opencart,php,mysql,docker,nginx,opencart,Php,Mysql,Docker,Nginx,Opencart,我有一个Nginx、PHP-FPM和MySQL在docker容器中运行。我想在“public”子文件夹中安装Opencart 3,以便将来开发。 但当我尝试安装OC3时,nginx出现了404错误。同时,服务器在工作,容器在相互ping,我可以显示phpinfo(),很明显一切都正常工作。 错在哪里 docker-compose.yml version: '3.7' services: ktt_nginx: build: ./docker/nginx container_n
version: '3.7'
services:
ktt_nginx:
build: ./docker/nginx
container_name: ktt_nginx
ports:
- '86:80'
volumes:
- ./docker/nginx/conf:/etc/nginx/conf.d
- .:/var/www/html
- ./docker/nginx/log/:/var/log/nginx
- /tmp:/tmp
depends_on:
- ktt_php
networks:
- ktt-net
ktt_php:
build: ./docker/php
container_name: ktt_php
volumes:
- .:/var/www/html
- /tmp:/tmp
- ~/.composer:/var/www/.composer
depends_on:
- ktt_mysql
networks:
- ktt-net
ktt_mysql:
image: mysql:5.7
container_name: ktt_mysql
ports:
- "3386:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=kttdb
- MYSQL_USER=opencart
- MYSQL_PASSWORD=root
volumes:
- ktt_mysql_data:/var/lib/mysql
networks:
- ktt-net
ktt_pma:
image: phpmyadmin/phpmyadmin
container_name: ktt_pma
environment:
- PMA_ARBITRARY=1
restart: always
ports:
- 8086:80
volumes:
- /sessions
depends_on:
- ktt_mysql
networks:
- ktt-net
networks:
ktt-net:
volumes:
ktt_mysql_data:
server.conf
server {
server_name localhost;
root /var/www/html/public;
location / {
# try to serve file directly, fallback to index.php
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass ktt_php:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/index.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}
nginx Dockerfile
FROM nginx:latest
RUN apt-get update && apt-get install mc -y
RUN usermod -u 1000 nginx && groupmod -g 1000 nginx
我不得不再次处理配置Opencart在Docker容器中工作的问题。现在我能够进行正确的系统配置。 下面是OpenCart 3的配置示例 docker-compose.yml
version: '3.7'
services:
ktt_nginx:
build: ./docker/nginx
container_name: ktt_nginx
ports:
- '86:80'
volumes:
- ./docker/nginx/conf:/etc/nginx/conf.d
- .:/var/www/html
- ./docker/nginx/log/:/var/log/nginx
- /tmp:/tmp
depends_on:
- ktt_php
networks:
- ktt-net
ktt_php:
build: ./docker/php
container_name: ktt_php
volumes:
- .:/var/www/html
- /tmp:/tmp
- ~/.composer:/var/www/.composer
depends_on:
- ktt_mysql
networks:
- ktt-net
ktt_mysql:
image: mysql:5.7
container_name: ktt_mysql
ports:
- "3386:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=kttdb
- MYSQL_USER=opencart
- MYSQL_PASSWORD=root
volumes:
- ktt_mysql_data:/var/lib/mysql
networks:
- ktt-net
ktt_pma:
image: phpmyadmin/phpmyadmin
container_name: ktt_pma
environment:
- PMA_ARBITRARY=1
restart: always
ports:
- 8086:80
volumes:
- /sessions
depends_on:
- ktt_mysql
networks:
- ktt-net
networks:
ktt-net:
volumes:
ktt_mysql_data:
docker/mysql/Dockerfile
FROM nginx:latest
RUN apt-get update && apt-get install mc -y
RUN usermod -u 1000 nginx && groupmod -g 1000 nginx
docker/nginx/conf/server.conf
server {
server_name localhost;
root /var/www/html/public;
location / {
# try to serve file directly, fallback to index.php
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass ktt_php:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/index.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}
docker/php fpm/Dockerfile
FROM nginx:latest
RUN apt-get update && apt-get install mc -y
RUN usermod -u 1000 nginx && groupmod -g 1000 nginx
docker/php fpm/php.ini
memory_limit = 2G
always_populate_raw_post_data = -1
post_max_size=30M
upload_max_filesize=30M
cgi.fix_pathinfo = 1
fastcgi_split_path_info = 1
max_execution_time = 18000
flag session.auto_start = off
zlib.output_compression = on
suhosin.session.cryptua = off
display_errors = On
max_input_vars = 2000
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_connect_back=0
xdebug.remote_handler=dbgp
xdebug.remote_autostart=1
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
xdebug.remote_host=172.17.0.1