Docker端口没有正确暴露

时间:2018-04-26 16:32:55

标签: docker

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容器,我可以很好地登录,所以它不是密码问题。

为什么我不能正常到达我的容器? :(

2 个答案:

答案 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绑定是正确的。

enter image description here enter image description here

enter image description here

这里的问题不是docker-compose。它可以在您的操作系统配置中。

答案 1 :(得分:1)

我在docker-compose中使用了mysql:5.7标签,这使得容器能够正常工作。我想最新的分支机构与我的本地环境存在一些问题。

仍然不确定nginx是什么,但这不是问题。