Reputation: 785
I've started to learn Docker. I have Laravel application and want to start it in docker containers. But I can't run it correctly.
I have this 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:
And this 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
After run containers I have 502 Bad Gateway
and in web container I have this:
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"
.
I very bad at server settings and don't understand what happened. Will be very grateful for every help.
Upvotes: 0
Views: 3923
Reputation: 2463
This is probably caused by php listening on localhost and does not accept external connections. You should update you php.ini
to listen on 0.0.0.0.
you could test this by running the following command on your app container. And try to telnet from the web container to the app container.
/usr/bin/php -S 0.0.0.0:9000
telnet app 9000
If, for some reason that command fails try to edit your php-fpm config to set the listen address to 0.0.0.0:9000
Example:
; 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
Upvotes: 3