【发布时间】:2017-10-26 19:27:58
【问题描述】:
我开发了一个应用程序,它使用了四个 Docker 容器(php7.0-fpm、nginx、mysql 和 phpmyadmin),这些容器过去在本地 (MacOS) 和我的 VPS (Debian 9 Stretch) 上都可以正常运行。昨天我在 docker-compose 文件中将端口 80 添加到我的 nginx 配置中,以确保 nginx 可以强制 http 流量到 https。这就像我预期的那样在本地工作,但是当我在我的 VPS 上提取更改时,当我运行 docker-compose up --build 时收到以下消息:
错误:对于 my_nginx 无法启动服务 nginx:驱动程序失败 在端点 my_nginx 上编程外部连接 (ff89cec0a968850919eebabe9e003c0bd4e65205eb6f3c3dd286037b3a1745fc): 启动用户态代理时出错:监听 tcp 0.0.0.0:80:监听:地址 已经在使用中
错误:对于 nginx 无法启动服务 nginx:驱动程序失败 在端点 my_nginx 上编程外部连接 (ff89cec0a968850919eebabe9e003c0bd4e65205eb6f3c3dd286037b3a1745fc): 启动用户态代理时出错:监听 tcp 0.0.0.0:80:监听:地址 已经在使用中
奇怪的是,当我在本地运行命令时,一切正常。
下面是我的 docker-compose.yml
version: "2.0"
services:
nginx:
build: ./nginx/
ports:
- 443:443
- 80:80
volumes:
- ${APPLICATION_ROOT}:/${WEBROOT}
- ./ssl:/etc/nginx/ssl
- ./nginx/config/default.conf:/etc/nginx/conf.d/default.conf
restart: always
depends_on:
- php
environment:
ENVIRONMENT: "${APPLICATION_ENV}"
URL: "${APPLICATION_URL}"
container_name: my_nginx
php:
build: ./php/
ports:
- 8080:80
volumes:
- ${APPLICATION_ROOT}:/${WEBROOT}
restart: always
depends_on:
- mysql
environment:
ENVIRONMENT: "${APPLICATION_ENV}"
URL: "${APPLICATION_URL}"
MYSQL_HOST: "${DB_HOST}"
MYSQL_DATABASE: "${DB_NAME}"
MYSQL_USER: "${DB_USERNAME}"
MYSQL_PASSWORD: "${DB_PASSWORD}"
container_name: my_php
mysql:
build: ./mysql/
volumes:
- ./db:/var/lib/mysql
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_HOST: "${DB_HOST}"
MYSQL_DATABASE: "${DB_NAME}"
MYSQL_USER: "${DB_USERNAME}"
MYSQL_PASSWORD: "${DB_PASSWORD}"
explicit_defaults_for_timestamp: 1
container_name: my_db
phpmyadmin:
build: ./phpmyadmin/
restart: always
depends_on:
- mysql
ports:
- 8181:80
environment:
PMA_HOST: my_db
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_USERNAME: "${DB_USERNAME}"
MYSQL_PASSWORD: "${DB_PASSWORD}"
container_name: my_phpmyadmin
有人知道我在这里缺少什么吗?我尝试将 php 端口更改为 8282:80,但这也不起作用(而且我不太了解端口和所有端口是如何工作的)。它怎么能在我的 Mac 上本地工作?
【问题讨论】: