version: '3'
services:
app:
build: .
ports:
- "8000:8000"
volumes:
- .:/srv/redditaurus
environment:
- REDDIT_KEY=${REDDIT_KEY}
- REDDIT_SECRET=${REDDIT_SECRET}
links:
- mysql:mysql
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
ports:
- "3306:3306"
# volumes:
# - ./mysql:/var/lib/mysql/
nginx:
image: nginx
ports:
- "80:80"
这是我的docker-compose.yml。最奇怪的事情正在发生。我可以访问localhost:8000并获得redditaurus应用程序,没有任何问题。但是,如果我尝试使用localhost:80或者myshost终端的localhost:3306做同样的事情,我将获得拒绝访问权限或ERR_EMPTY_RESPONSE。
如果我尝试0.0.0.0:80,我会得到默认的nginx页面,所以没关系,但是为什么本地主机不会工作?
MySQL拒绝在localhost或0.0.0.0上提供服务。我试过从Sequel Pro,链接容器内部以及我的主机控制台访问它,没有任何东西可以进入它。如果我执行SQL容器,我可以很好地登录,所以它不是密码问题。
为什么我不能正常到达我的容器? :(
答案 0 :(得分:1)
您缺少一些配置属性。试试这个
interface Foo { boolean isFunny(p1, p2); }
class FooFacade implements Foo { ... } // FooDecorator, actually
如果你想通过终端连接mysql。跑这个
version: '3'
services:
app:
build: .
ports:
- "8000:8000"
volumes:
- .:/srv/redditaurus
environment:
- REDDIT_KEY=${REDDIT_KEY}
- REDDIT_SECRET=${REDDIT_SECRET}
links:
- mysql:mysql
mysql:
image: mysql
entrypoint: ['/entrypoint.sh', '--default-authentication-plugin=mysql_native_password']
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ALLOW_EMPTY_PASSWORD: "YES"
ports:
- "3306:3306"
nginx:
image: nginx
ports:
- "80:80"
接下来就是你的nginx与80绑定是正确的。
这里的问题不是docker-compose。它可以在您的操作系统配置中。
答案 1 :(得分:1)
我在docker-compose中使用了mysql:5.7标签,这使得容器能够正常工作。我想最新的分支机构与我的本地环境存在一些问题。
仍然不确定nginx是什么,但这不是问题。