docker-compose up: OSError: [Errno 99] Невозможно назначить запрошенный адрес - PullRequest
0 голосов
/ 04 апреля 2019

Я использую docker-compose up для запуска файла Python, однако, есть информация об ошибке:

matching_server_1  | Traceback (most recent call last):
matching_server_1  |   File "server.py", line 65, in <module>
matching_server_1  |     server = TCPServer((HOST, PORT), RequestHandler)
matching_server_1  |   File "/usr/local/lib/python3.7/socketserver.py", line 452, in __init__
matching_server_1  |     self.server_bind()
matching_server_1  |   File "/usr/local/lib/python3.7/socketserver.py", line 466, in server_bind
matching_server_1  |     self.socket.bind(self.server_address)
matching_server_1  | OSError: [Errno 99] Cannot assign requested address

Но программа работает хорошо python3 server.py без докера.

структура проекта:

root
   |—docker-compose.yml
   |—matching_engine
         |—Dockerfile
         |-server.py (main)
         |-.......

, и мой Dockerfile:

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /src
WORKDIR /src
ADD requirements.txt /src/
RUN pip install -r requirements.txt
ADD . /src/

, а мой docker-compose.yml:

version: '2'

services:
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: passw0rd
      POSTGRES_USER: postgres
      POSTGRES_DB: EXCHANGEMACHINE
    volumes:
      - /var/lib/docker/volumes/data-volume:/var/lib/postgresql/data
    restart: always
  matching_server:
    build: ./matching_engine
    user: nobody
    command: bash -c "python3 server.py"
    volumes:
      - ./matching_engine:/src
    ports:
      - "12345:12345"
    expose:
      - "12345"
    depends_on:
      - db

и кодчто сообщает об ошибке в server.py:

if __name__ == '__main__':
    HOST = '0.0.0.0'
    PORT = 12345
    server = TCPServer((HOST, PORT), RequestHandler)
    server.serve_forever()

Что не так в этой ситуации?Спасибо!

1 Ответ

1 голос
/ 04 апреля 2019

Попытайтесь добавить в ваш сервис matchingserver

links: 
  - db

и снимите экспозицию: "12345"

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