如何在Docker容器中使用PHP Artisan服务? [英] How to use php artisan serve inside docker container?

查看:942
本文介绍了如何在Docker容器中使用PHP Artisan服务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆