我得到了一个包含使用Docker / Symfony的PHP应用程序的存储库。我能够成功运行docker-compose up --build
,看起来一切都已成功运行。当我运行docker ps --all
时,我看到了我期望的一切
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65d7f22b6b13 nginx "nginx -g 'daemon ..." 16 minutes ago Up 7 minutes 0.0.0.0:8086->80/tcp symfony_nginx_1
4fa3c58d1eea symfony_fpm "docker-php-entryp..." 16 minutes ago Up 7 minutes 9000/tcp symfony_fpm_1
7316d40b1b8c mysql:5.5 "docker-entrypoint..." 16 minutes ago Up 7 minutes 3306/tcp symfony_mysql_1
cac0757e2f6d redis:latest "docker-entrypoint..." 16 minutes ago Up 7 minutes 6379/tcp symfony_redis_1
当我尝试在浏览器中访问
localhost:8086
时,连接被拒绝。虽然我的本地配置可能有些混乱,但在另一台机器上尝试了同样的结果。我试图通过运行docker logs 65d7f22b6b13
来获取nginx图像的日志,但是它什么也不返回。关于docker / nginx和端口转发,我做不正确的事情是我不了解的吗?以下是我的docker配置
version: '2'
services:
nginx:
image: nginx
ports:
- "8086:80"
volumes:
- ./:/var/www/symfony
- ./docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
links:
- fpm
fpm:
build: docker/php-fpm/
links:
- redis
- mysql
volumes:
- ./:/var/www/symfony
- ./docker/php-fpm/php-ini-overrides.ini:/usr/local/etc/php/conf.d/99-overrides.ini
mysql:
image: mysql:5.5
environment:
MYSQL_DATABASE: devdb
MYSQL_USER: devdb
MYSQL_PASSWORD: devdb
MYSQL_ROOT_PASSWORD: root
volumes:
- ./backup.sql.gz:/docker-entrypoint-initdb.d/backup.sql.gz
redis:
image: redis:latest
我使用的是OSX 10.11.6-感谢您的帮助。 Symfony和Docker是我的新手。
编辑以下是我的Nginx配置文件-我更新了
listen
以使用127.0.0.1:8086
,但在运行0.0.0.0
时仍然使用docker ps
看到它server {
listen 127.0.0.1:80 default;
client_max_body_size 108M;
access_log /var/log/nginx/symfony.access.log;
root /var/www/symfony/web;
rewrite ^/index\.php/?(.*)$ /$1 permanent;
try_files $uri @rewriteapp;
location @rewriteapp {
rewrite ^(.*)$ /index.php/$1 last;
}
# Deny all . files
location ~ /\. {
deny all;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass fpm:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_index index.php;
send_timeout 1800;
fastcgi_read_timeout 1800;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/routemap3_php_errors.log";
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
}
# Statics
location /(bundles|media) {
access_log off;
expires 30d;
try_files $uri @rewriteapp;
}
}
最佳答案
您的答案在您的问题中:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65d7f22b6b13 nginx "nginx -g 'daemon ..." 16 minutes ago Up 7 minutes 0.0.0.0:8086->80/tcp symfony_nginx_1
现在,如果您仔细阅读
PORTS
列,您将看到0.0.0.0:8086->80/tcp
,这意味着端口0.0.0.0
上的本地循环8086
映射到80
容器的端口ngnix
,并且已映射到tcp
协议(protocol)。因此,您要访问的正确网址是http://0.0.0.0:8086/
您还必须更改您的NGINX配置以适应该配置,它应显示为:
listen 0.0.0.0:80;
甚至更好:
listen *:80;
关于symfony - 无法访问本地主机上的Docker Nginx镜像-OSX,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44032246/