Порты Docker не отображаются должным образом - PullRequest
0 голосов
/ 26 апреля 2018
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 или localhost: 3306 с терминала mysql, я получу отказ в доступе или ERR_EMPTY_RESPONSE.

Если я попытаюсь 0.0.0.0:80, я получу страницу nginx по умолчанию, так что все в порядке, но почему не работает localhost?

MySQL отказывается обслуживаться на localhost или 0.0.0.0. Я попытался получить доступ к нему из Sequel Pro, из связанного контейнера и из консоли моего хост-компьютера, и ничто не может попасть в него. Если я выполняю exec в контейнере SQL, я могу просто войти в систему, так что это не проблема с паролем.

Почему я не могу нормально добраться до своих контейнеров? (

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Я использовал тег mysql: 5.7 в docker-compose, и это позволило контейнеру работать. Я думаю, что в последней ветке есть проблемы с моим локальным env.

Все еще не уверен, что случилось с nginx, но это не проблема.

0 голосов
/ 26 апреля 2018

Вам не хватает некоторых свойств конфигурации. попробуйте это

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"

, если вы хотите подключить MySQL через терминал. запустить это mysql -uroot -proot —protocol tcp

Следующая вещь - ваша привязка nginx с 80 - это корректная работа.

enter image description here enter image description here

enter image description here

Проблема в том, что здесь нет docker-compose. Это может быть в вашей конфигурации ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...