Я использую 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()
Что не так в этой ситуации?Спасибо!