gpt4 book ai didi

laravel - 502错误的网关Docker + Laravel

转载 作者:行者123 更新时间:2023-12-02 20:46:21 25 4
gpt4 key购买 nike

我已经开始学习Docker。我有Laravel应用程序,想在Docker容器中启动它。但是我无法正确运行它。

我有这个docker-compose.yml:

version: '2'
services:

# The Application
app:
build:
context: ./
dockerfile: app.dockerfile
working_dir: /var/www
volumes:
- ./:/var/www
environment:
- "DB_PORT=3306"
- "DB_HOST=database"

# The Web Server
web:
build:
context: ./
dockerfile: web.dockerfile
working_dir: /var/www
volumes_from:
- app
ports:
- 8080:80

# The Database
database:
image: mysql:5.6
volumes:
- dbdata:/var/lib/mysql
environment:
- "MYSQL_DATABASE=homestead"
- "MYSQL_USER=homestead"
- "MYSQL_PASSWORD=secret"
- "MYSQL_ROOT_PASSWORD=secret"
ports:
- "33061:3306"

volumes:
dbdata:

而这个 vhost.conf:
server {
listen 80;
index index.php index.html;
root /var/www/public;

location / {
try_files $uri /index.php?$args;
}

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}

app.dockerfile:
FROM php:7.1.3-fpm

RUN apt-get update && apt-get install -y \
libmagickwand-dev --no-install-recommends \
libmcrypt-dev \
cron \
mysql-client \
vim \
&& docker-php-ext-install mcrypt pdo_mysql

web.dockerfile:
FROM nginx:1.10

ADD vhost.conf /etc/nginx/conf.d/default.conf

运行容器后,我有 502 Bad Gateway,在网络容器中,我有这个:
connect() failed (111: Connections refused) while connecting to upstream, client: 192.168.99.1, server: request "GET /HTTP/1.1", upstream: "fastcgi://172.19.0.3:9000", host: "192.168.99.101:8080"

我对服务器设置很不好,也不了解发生了什么。将非常感谢您的帮助。

最佳答案

这可能是由于php在localhost上侦听引起的,并且不接受外部连接。您应该更新php.ini以收听0.0.0.0。

您可以通过在应用容器上运行以下命令来进行测试。并尝试从Web容器远程登录到应用容器。

/usr/bin/php -S 0.0.0.0:9000

telnet app 9000

如果由于某种原因该命令失败,请尝试编辑您的php-fpm配置以将侦听地址设置为 0.0.0.0:9000
例:
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.

listen = 0.0.0.0:9000

关于laravel - 502错误的网关Docker + Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53203294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com