我使用 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
Run Code Online (Sandbox Code Playgroud)
我运行以下命令来创建一个容器并启动一个 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
Run Code Online (Sandbox Code Playgroud)
之后,容器的终端将显示成功信息:
Laravel development server started: <http://127.0.0.1:8000>
Run Code Online (Sandbox Code Playgroud)
但是当我在本地浏览器访问 127.0.0.1:3000 时,我什么也得不到。
那么是否有可能简单地运行 php artisan serve 来在 docker 容器内启动一个 Laravel 应用程序?
或者我必须使用 nginx 或 …
我在将WebSocket服务器放入Docker容器时遇到麻烦。
这是服务器代码,它使用“ connected”写入新连接。
// server.go
func RootHandler(w http.ResponseWriter, r *http.Request) {
upgrader := websocket.Upgrader{ // (Uses gorilla/websocket)
ReadBufferSize: 4096,
WriteBufferSize: 4096,
}
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
panic(err)
}
if err = conn.WriteMessage(websocket.TextMessage, []byte("connected")); err != nil {
panic(err)
}
}
func main() {
fmt.Println("server is running")
// For graceful shutdown
stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt)
server := http.Server{Addr: "localhost:8000"}
defer server.Close()
http.HandleFunc("/", RootHandler)
go func() {
err := server.ListenAndServe()
if err …Run Code Online (Sandbox Code Playgroud)