Проброс приложения через docker-образ для запуска без подкачки библиотек

Возникла такая проблема, что веб страничка, написанная на Fast-api, запускается через docker-compose. Но при переносе на компьютер без подключения к интернету, не происходит подкачка библиотек, из-за чего не запускается она. Как сделать проброс приложения через докер образы. Гуглил, но всё равно не могу понять. docker-compose.yaml :

version: "3.9"

services:

  app:

    build: .

    depends_on:

      - postgres

    volumes:

      - ./app:/app

    ports:

      - "5000:80"

    links:

      - 'postgres'

  postgres:

    image: postgres:12.7

    container_name: postgres

    restart: always

    environment:

      POSTGRES_DB: "database"

      POSTGRES_USER: "postgres"

      POSTGRES_PASSWORD: "pass"

      DATABASE_HOST: "172.17.0.1"

    volumes:

    - /var/lib/postgresql/data

    ports:

      - "5432:5432"

Dockerfile:

FROM python:3.10-slim
#
WORKDIR /code/app
#
COPY ./requirements.txt /code/requirements.txt
#
ARG PROXY
RUN if [ -z "$PROXY" ]; then \
        pip install --no-cache-dir --upgrade -r /code/requirements.txt; \
    else \
        pip install --proxy "$PROXY" --no-cache-dir --upgrade -r /code/requirements.txt; \
    fi
#
COPY ./app /code/app
#
#
CMD ["uvicorn", "main:app", "--host", "0.0.0.0","--reload", "--port", "80"]

Ответы (1 шт):

Автор решения: Pak Uula

Вообще говоря, build: . - это исключительно для разработки. Для деплоймента, даже не в продакшене, в композере нужны готовые образы. Поэтому не боритесь за сборку образа в деплойменте, ИМХО.

Соберите образ на той машине, где есть доступ к интернету, затем перенесите готовый образ на целевую машину.

  1. Экспорт образа на машине с интернетом docker save -o image.tar image_name
  2. Импорт образа на машине без интернета: docker load -i image.tar

В результате на целевой машине появится образ с именем image_name

Поставьте в вашем композере image: image_name и не надо возится с пакетами.

PS. Интересно, откуда на машине без интернета образ postgres:12.7?

→ Ссылка