Docker compose не удалось создать указанную c службу на Mac - PullRequest
0 голосов
/ 22 января 2020

Один из моих проектов имеет Python, PostgreSQL, Node зависимости. У меня есть следующий docker-compose.yaml файл и в соответствии с каталогом сборки есть один Dockerfile. Все отлично и работает на Linux машине. Но когда я работаю над своей мамой c, служба server не работает. Но я могу запустить с Docker Desktop для ma c, а также с консоли, набрав docker-compose up --build server. Но когда я пытаюсь собрать все с docker-compose up --build. Это не работает на ма c.
Я нашел следующую ошибку на консоли:

return func(*args, **kwargs)

File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 260, in cursor

return self._cursor()

File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 236, in _cursor

self.ensure_connection()

File "/usr/local/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner

File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection

self.connect()

File "/usr/local/lib/python3.8/site-packages/django/db/utils.py", line 90, in __exit__

raise dj_exc_value.with_traceback(traceback) from exc_value

File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 197, in connect

self.connection = self.get_new_connection(conn_params)

File "/usr/local/lib/python3.8/site-packages/django/db/backends/postgresql/base.py", line 185, in get_new_connection

connection = Database.connect(**conn_params)

File "/usr/local/lib/python3.8/site-packages/psycopg2/__init__.py", line 126, in connect

conn = _connect(dsn, connection_factory=connection_factory, **kwasync)

django.db.utils.OperationalError: could not connect to server: Connection refused

Is the server running on host "db" (172.19.0.2) and accepting

TCP/IP connections on port 5432?


Traceback (most recent call last):

psycopg2.OperationalError: could not connect to server: Connection refused

Is the server running on host "db" (172.19.0.3) and accepting

The above exception was the direct cause of the following exception:

File "/app/server/manage.py", line 15, in <module>

execute_from_command_line(sys.argv)

File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line

utility.execute()

File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute

self.fetch_command(subcommand).run_from_argv(self.argv)

File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 328, in run_from_argv

self.execute(*args, **cmd_options)

File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 369, in execute

output = self.handle(*args, **options)

File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 83, in wrapped

res = handle_func(*args, **kwargs)

File "/usr/local/lib/python3.8/site-packages/django/core/management/commands/migrate.py", line 86, in handle

executor = MigrationExecutor(connection, self.migration_progress_callback)

File "/usr/local/lib/python3.8/site-packages/django/db/migrations/executor.py", line 18, in __init__

self.loader = MigrationLoader(self.connection)

File "/usr/local/lib/python3.8/site-packages/django/db/migrations/loader.py", line 49, in __init__

self.build_graph()

File "/usr/local/lib/python3.8/site-packages/django/db/migrations/loader.py", line 212, in build_graph

self.applied_migrations = recorder.applied_migrations()

File "/usr/local/lib/python3.8/site-packages/django/db/migrations/recorder.py", line 76, in applied_migrations

if self.has_table():

File "/usr/local/lib/python3.8/site-packages/django/db/migrations/recorder.py", line 56, in has_table

return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())

docker-compose.yaml

version: '3.7'

services:
  db:
    image: postgres:11.1-alpine
    container_name: baraticn_db
    ports:
      - '5434:5432'
    volumes:
      - ./postgres_data:/var/lib/postgresql/data/
  server:
    build: ./server
    container_name: baraticn_python
    command: sh -c "python /app/server/manage.py migrate && python /app/server/manage.py runserver 0.0.0.0:8081"
    working_dir: /app/server
    environment:
      - PYTHONDONTWRITEBYTECODE=1
      - PYTHONUNBUFFERED=1
    volumes:
      - ./server:/app/server:cached
    ports:
      - '8081:8081'
    depends_on:
      - db

  client:
    build: ./client
    container_name: baraticn_vuejs
    command: sh -c "yarn install && yarn serve"
    working_dir: /app/client
    volumes:
      - ./client:/app/client:cached
    ports:
      - '8080:8080'

server/Dockerfile

FROM python:3.8.1-alpine
RUN apk update && \
    apk add --virtual build-deps gcc python-dev musl-dev && \
    apk add postgresql-dev && \
    apk add netcat-openbsd

WORKDIR /app/server
COPY requirements.txt /app/server
RUN pip3 install -r requirements.txt

1 Ответ

0 голосов
/ 23 января 2020

Проведя некоторое исследование по этому вопросу, я обнаружил, что проблем нет вообще. На моем Ma c я выделил 1 ЦП, 1 ГБ ОЗУ для docker контейнеров. Итак, я бегал и медленно запускал контейнер. Мой Python сервер приложений depends_on PostgreSQL сервер базы данных. Контейнер БД работает, но не готов к работе. Итак, сервер python впервые вышел из строя.

Быстрое решение:

restart: on-failure:10

Добавлен сервис python server. Я имею в виду, он будет пытаться запустить 10 раз после каждого сбоя.

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