Php 使用Docker compose在Docker中运行laravel/lumen

Php 使用Docker compose在Docker中运行laravel/lumen,php,docker,nginx,docker-compose,lumen,Php,Docker,Nginx,Docker Compose,Lumen,我正在学习微服务架构,我想使用docker compose web-这将运行我的nginx前端服务器 应用程序-这将运行我的php fpm 数据库-这将运行我的mysql服务器 这是我的docker compose.yml version: '2' services: # The Web Server web: build: context: ./ dockerfile: ./deploy/web.dockerfile working_dir

我正在学习微服务架构,我想使用
docker compose

  • web-这将运行我的nginx前端服务器
  • 应用程序-这将运行我的php fpm
  • 数据库-这将运行我的mysql服务器
这是我的docker compose.yml

version: '2'
services:

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

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

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

volumes:
  dbdata:
部署/web.dockerfile

FROM nginx:alpine
ADD deploy/vhost.conf /etc/nginx/conf.d/default.conf
FROM yavin/alpine-php-fpm:7.1
COPY deploy/php.ini /etc/php7/conf.d/50-setting.ini
COPY deploy/php-fpm.conf /etc/php7/php-fpm.conf
部署/app.dockerfile

FROM nginx:alpine
ADD deploy/vhost.conf /etc/nginx/conf.d/default.conf
FROM yavin/alpine-php-fpm:7.1
COPY deploy/php.ini /etc/php7/conf.d/50-setting.ini
COPY deploy/php-fpm.conf /etc/php7/php-fpm.conf
deploy/php.ini

max_execution_time=30
max_input_time=60
memory_limit=128M
post_max_size=256M
upload_max_filesize=256M
error_reporting=E_ALL & ~E_DEPRECATED
display_errors=On
date.timezone=Europe/London
deploy/php fpm.conf

[www]
user = nobody
group = nobody
listen = [::]:9000
chdir = /var/www
pm = static
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
catch_workers_output = Yes
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;
    }
}
vhost.conf

[www]
user = nobody
group = nobody
listen = [::]:9000
chdir = /var/www
pm = static
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
catch_workers_output = Yes
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;
    }
}
当我运行
docker compse up
时,我可以看到一切运行正常:

但是当我访问时,我发现chrome中出现了
这个网站无法访问的错误

我在windows上使用Docker工具箱,我的Docker版本是:
Docker版本17.10.0-ce,build f4ffd25


如何在docker上正确设置LEMP堆栈以运行简单的lumen应用程序?docker Toolbox是Windows和Mac上docker的较旧解决方案。容器中没有本地主机代理(您不能使用
localhost
访问容器公开的端口)

Docker Toolbox实际上是Docker Machine,它在后台运行一个虚拟机,这个虚拟机有一个IP地址。您可以使用以下方式获取IP地址:

docker-machine ip
或:

它将为您提供类似192.168.88.100的信息。然后,您将使用此地址访问您的公开端口,例如


或者,您可以使用Docker Machine rm删除Docker计算机,卸载Docker Toolbox,然后安装Docker for Windows,这将允许您访问本地主机上已发布的容器端口。我意识到我的
phpfpm.conf
中有输入错误,它已经被更正,容器被重新构建,我仍然无法访问我的应用程序。