我使用 dockerfile 创建一个 php-composer 图像:
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 应用程序。
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
之后容器的终端会显示成功信息:
Laravel development server started: <http://127.0.0.1:8000>
但是当我在本地浏览器访问 127.0.0.1:3000 时,我什么也没得到。
那么是否可以简单地运行 php artisanserve 来在 docker 容器内启动 laravel 应用程序?
或者我必须使用 nginx 或 apache 来运行它?
可以这样做:
$ 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
.
当启动 Docker 时,会自动创建一个默认的桥接网络(也称为网桥),除非另有说明,新启动的容器都会连接到该网络。
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 主机隔离。
https://docs.docker.com/network/host
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)