Docker:Web容器和PHP容器之间的通信
我试图dockerizing项目运行与PHP + Apache的HTTP服务器。 我了解到,我需要一个容器为Apache HTTP服务器和另一个容器为PHP脚本。 我搜查了很多,但仍然不明白这是如何工作的。 我现在知道的是,我应该诉诸于dockernetworking,只要他们在同一个networking,他们应该互相沟通。
我得到的最近的信息是这个,但它使用nginx:
https://www.codementor.io/patrickfohjnr/developing-laravel-applications-with-docker-4pwiwqmh4
从原文引用:
vhost.conf The vhost.conf file contains standard Nginx configuration that will handle http requests and proxy traffic to our app container on port 9000. Remember from earlier, we named our container app in the Docker Compose file and linked it to the web container; here, we can just reference that container by its name and Docker will route traffic to that app container.
我的问题是什么configuration我应该做的使PHP容器和Web容器之间的通信发生使用像上面的Apache HTTP服务器? 这背后的理由是什么? 我真的很困惑,任何信息将非常感激。
这种情况下的configuration是Docker Compose。 他们使用Docker Compose来促进容器中的DNS更改,使他们能够parsing名称,如app
到IP地址。 在您链接的示例中, web
服务链接到app
服务。 名称app
现在可以通过DNSparsing到其中一个app
服务容器。
在文章中,他们使用的web
服务nginxconfiguration有一个主机和端口对app:9000
。 app
服务在端口9000上的容器内侦听,而nginx会将app
parsing为app
服务容器的一个IP地址。
在Docker命令中的这个相当于:
应用容器:
docker run --name app -v ./:/var/www appimage
Web容器:
docker run --name web --link app:app -v ./:/var/www webimage
您链接的示例使用两个容器:
- 一个运行nginx的容器
- 一个运行php-fpm的容器
这两个容器可以相互连接,这是由于文章示例docker-compose.yml
中的web
服务中的links
指令docker-compose.yml
。 借此,这两个容器可以将名称web
和app
parsing到相应的docker容器。 这意味着web
容器中的nginx服务只需转发到<hostname>:<port>
app:9000
即可将接收到的任何请求转发到php-fpm容器。
如果你想留在PHP + Apache,那么有一个核心容器php:7-apache
,它将在一个容器内完成你正在寻找的任务。 假设以下项目结构
/ Project root - /www/ Your PHP files
你可以在你的项目根目录下如下生成一个docker-compose.yml
文件:
web: image: php:7-apache ports: - "8080:80" volumes: - ./www/:/var/www/html
然后从您的项目根目录运行docker-compose up
并能够在localhost:8080
访问您的应用程序
上面的docker-compose.yml会将你的项目中的www
目录作为一个卷挂载在Apache服务器所在的容器的/var/www/html
目录下。
- docker中的apache反向代理
- Apache gSOAP + Docker
- 卡在永恒的循环
- 在不同的docker集装箱中无缝地托pipe网站的不同部分
- Jupyter Spark数据库访问; java.lang.ClassNotFoundException:com.mysql.jdbc.Driver
- 在Docker容器中运行时,JDBC进程似乎停止
- Docker – 全部火花笔记本 – 从本地卷运行 – Ubuntu的
- rg.apache.spark.SparkException:主要url无效:spark://tasks.501393358-spark-master:7077
- 客户机中运行的MS Edge不会存储来自另一位客人托pipe的网站的Cookie