如何在Docker容器中使用PHP Artisan服务? [英] How to use php artisan serve inside docker container?
问题描述
我使用dockerfile创建一个php-composer映像:
I create a php-composer image using dockerfile:
FROM php:7
RUN apt-get update
RUN apt-get install curl
RUN curl -sS https://getcomposer.org/installer -o composer-setup.php
RUN php composer-setup.php --install-dir=/usr/local/bin --filename=composer
RUN apt-get install -y git
然后我运行以下命令来创建容器并启动laravel应用.
And I run following commands to create a container and start a laravel app.
docker run -p 127.0.0.1:3000:8000 --name MyTest -dt php-composer to create a container
docker cp laravelApp/ d4bbb5d36312:/usr/
docker exec -it MyTest bash
cd usr/laravelApp
php artisan serve
之后,容器的终端将显示成功信息:
After thet, container's terminal will show the success info:
Laravel development server started: <http://127.0.0.1:8000>
但是当我在本地浏览器中访问127.0.0.1:3000时,我什么也没得到.
But when I access 127.0.0.1:3000 at local browser, I get nothing.
那么是否有可能仅运行php artisan服务来在docker容器中启动laravel应用程序?
So is it possible that simply run php artisan serve to start a laravel app inside docker container?
还是我必须使用nginx或apache来运行它?
Or I must to using nginx or apache to run it?
推荐答案
可以这样做:
$ docker container run -it --rm -v /host/path/laravel:/app -p 3000:8000 php bash
$ cd /app
$ php artisan serve --host 0.0.0.0
默认情况下,容器以bridge
网络启动,在该网络中,主机通过地址0.0.0.0
可用.
By default containers start in bridge
network, inside which the host available by the address 0.0.0.0
.
启动Docker时,会自动创建一个默认的网桥网络(也称为网桥),除非另有说明,否则新启动的容器将与其连接.
When you start Docker, a default bridge network (also called bridge) is created automatically, and newly-started containers connect to it unless otherwise specified.
https://docs.docker.com/network/bridge
大约(仅Linux)
$ docker container run -it --rm --network host -v /host/path/laravel:/app php bash
$ cd /app
$ php artisan serve (or php artisan serve --port 3000)
如果您将主机网络驱动程序用于容器,则该容器的网络堆栈不会与Docker主机隔离.
If you use the host network driver for a container, that container’s network stack is not isolated from the Docker host.
https://docs.docker.com/network/host
这篇关于如何在Docker容器中使用PHP Artisan服务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!