我想首先说我对Docker
和docker-compose.yml
完全不熟悉,所以我从一开始就请求你的病人。
所以,我只是编写了我的第一个docker-compose.yml
文件,其代码如下:
version: '3'
services:
mysql:
image: mysql:latest
volumes:
- $PWD/data/db:/var/lib/mysql
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: appdb
MYSQL_USER: root
MYSQL_PASSWORD: root
phpfpm:
image: 10up/phpfpm
depends_on:
- mysql
- phpmyadmin
volumes:
- $PWD/web:/var/www/html
restart: always
extra_hosts:
- docker-local.dev:172.18.0.1
apache:
image: httpd:latest
depends_on:
- phpfpm
ports:
- 80:80
restart: "always"
volumes:
- $PWD/web:/usr/local/apache2/htdocs
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3306
PMA_USER: root
PMA_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASSWORD: root
ports:
- 8080:80
depends_on:
- mysql
mailcatcher:
image: schickling/mailcatcher
restart: always
ports:
- "1025:1025"
- "1080:1080"
environment:
MAILCATCHER_PORT: 1025
我的文件系统布局是这样的:
/
/web
info.php
docker-compose.yml
info.php中的内容如下:
<?php
phpinfo();
当我使用命令docker-compose up
运行docker时,我没有收到任何错误,MySQL
,Apache
和phpMyAdmin
以及{ {1}}似乎应该正常工作,但当我尝试访问网址mailcatcher
时,我看到了文件的内容,而不是函数http://localhost/info.php
的输出。
它可能有什么问题?
我有什么不对劲而且我没有看到它吗?
注意:这是一台开发机器,所以我不介意与我的代码共享的安全性和凭据:)。
答案 0 :(得分:1)
你正在使用Apache2(httpd)图像;不是PHP。您正在使用This is the image。
在该页面的文档中,它指出:
此图像仅包含具有上游默认值的Apache httpd。没有安装PHP,但扩展起来应该不难。另一方面,如果你只想要PHP和Apache httpd,请参阅PHP image并查看-apache标签。如果要运行简单的HTML服务器,请在项目中添加一个简单的Dockerfile,其中public-html /是包含所有HTML的目录。