在Docker中使用docker-compose运行laravel / lumen

我正在学习微服务架构,我想设置一个简单的stream明应用程序,使用docker-compose在3个独立的容器中运行

  • networking – 这将运行我的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 

部署/ app.dockerfile

 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 

部署/ 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 

部署/ 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 

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; } } 

当我运行docker-compse up我可以看到一切正常运行:

在这里输入图像说明

在这里输入图像说明

但是,当我访问http://127.0.0.1:8080我得到This site can't be reached铬错误。

我在使用Docker Toolbox的窗口上,而我的泊坞窗版本是: Docker version 17.10.0-ce, build f4ffd25

任何想法如何正确设置docker上的LEMP堆栈运行一个简单的stream明应用程序?

Docker Toolbox是Docker在Windows和Mac上的老式解决scheme。 没有从容器的本地主机代理(您不能使用localhost到容器暴露的端口)。

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

 docker-machine ip 

要么:

 docker-machine ip default 

它会给你类似于192.168.88.100。 然后,您将使用此地址到达您的暴露端口,如http://192.168.88.100:8080/

或者,您可以使用docker-machine rm删除Docker计算机,卸载Docker Toolbox,然后安装Docker for Windows,这将允许您访问localhost上已发布的容器端口。