【发布时间】:2018-11-25 07:30:08
【问题描述】:
这是我第一次从头开始开发 docker 应用程序表单。当我从本地机器编辑代码时,我希望我的所有服务都从容器运行。
所以我有一个名为 test/ 的根文件夹,我想学习本教程 https://auth0.com/blog/developing-restful-apis-with-lumen/。所以我需要作曲家、一个网络服务器(nginx)和一个数据库(mysql)。
我在根文件夹中有一个 docker-compose 文件,如下所示:
version: '2'
services:
composer:
image: composer
container_name: composer
volumes:
- ./authors:/app
restart: always
tty: true
command: bash
php:
image: php:fpm
container_name: php
restart: always
tty: true
working_dir: /var/www
volumes:
- ./authors:/var/www
environment:
- "DB_PORT=3306"
- "DB_HOST=mysql"
nginx:
image: nginx
container_name: nginx
restart: always
tty: true
working_dir: /var/www
volumes_from:
- php
volumes:
- ./vhost.conf:/etc/nginx/conf.d/default.conf
ports:
- 8080:80
mysql:
image: mysql:5.7
container_name: mysql
restart: always
tty: true
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: hmh
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: root
volumes:
- dbdata:/var/lib/mysql
#Volumes
volumes:
dbdata:
这里是用于nginx的配置文件:
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 php:8000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
composer 容器在那里,因此我可以在需要时随时跳入并运行一些命令,同时还可以通过运行php -S localhost:8000 -t public 将项目从中提取出来,这实际上会登录到服务器正在运行的控制台,但是当我进入 localhost:8080 它只显示 nginx 欢迎屏幕。
所以我知道 nginx 正在工作,composer 让我做我需要的所有工作,但是我如何通过 nginx 路由 php 服务器?我可以进入 php 的容器,然后启动服务器,但是当转到 URL 时它不起作用。如果问的不多,我想要一些解释,而不仅仅是解决方案。谢谢。
【问题讨论】:
标签: php docker docker-compose composer-php