Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker build failing - #1289

Closed
jithin77 opened this issue Jul 22, 2024 · 1 comment · Fixed by #1381
Closed

Docker build failing - #1289

jithin77 opened this issue Jul 22, 2024 · 1 comment · Fixed by #1381
Labels
bug Something isn't working

Comments

@jithin77
Copy link

System Info

Latest code from repo

🐛 Describe the bug

RUN poetry install --no-root
Installing dependencies from lock file

Package operations: 81 installs, 1 update, 0 removals

  • Installing idna (3.7)
  • Installing sniffio (1.3.1)
  • Installing anyio (4.4.0)
  • Installing certifi (2024.7.4)
  • Installing h11 (0.14.0)
  • Installing httpcore (0.16.3)
  • Installing numpy (1.26.4)
  • Installing rfc3986 (1.5.0)
  • Installing six (1.16.0)
  • Installing typing-extensions (4.12.2)
  • Installing charset-normalizer (3.3.2)
  • Installing contourpy (1.2.1)
  • Installing cycler (0.12.1)
  • Installing fonttools (4.53.1)
  • Installing distro (1.9.0)
  • Installing httpx (0.23.3)
  • Installing kiwisolver (1.4.5)
  • Installing markupsafe (2.1.5)
  • Installing greenlet (3.0.3)
  • Installing iniconfig (2.0.0)
  • Installing packaging (24.1)
  • Installing parse (1.20.2)
  • Installing pillow (10.4.0)
  • Installing pluggy (1.5.0)
  • Installing pyasn1 (0.6.0)
  • Installing pycparser (2.22)
  • Installing pydantic (1.10.17)
  • Installing pyparsing (3.1.2)
  • Installing python-dateutil (2.9.0.post0)
  • Installing pytz (2024.1)
  • Installing sqlglotrs (0.2.8)
  • Installing starlette (0.25.0)
  • Installing tqdm (4.66.4)
  • Installing urllib3 (2.2.2)
  • Installing astor (0.8.1)
  • Installing astroid (3.2.2)
  • Installing async-timeout (4.0.3)
  • Installing cffi (1.16.0)
  • Installing click (8.1.7)
  • Installing dnspython (2.6.1)
  • Installing duckdb (0.10.3)
  • Installing faker (19.13.0)
  • Installing isort (5.13.2)
  • Installing ecdsa (0.19.0)
  • Installing dill (0.3.8)
  • Installing fastapi (0.92.0)
  • Installing jinja2 (3.1.4)
  • Installing mako (1.3.5)
  • Installing matplotlib (3.9.1)
  • Installing mccabe (0.7.0)
  • Installing mypy-extensions (1.0.0)
  • Installing openai (1.35.12)
  • Installing pandas (1.5.3)
  • Installing parse-type (0.6.2)
  • Installing pathspec (0.12.1)
  • Installing platformdirs (4.2.2)
  • Installing pytest (7.4.4)
  • Installing python-dotenv (1.0.1)
  • Installing requests (2.32.3)
  • Installing rsa (4.9)
  • Installing scipy (1.14.0)
  • Updating setuptools (70.1.0 -> 70.3.0)
  • Installing sqlalchemy (2.0.31)
  • Installing sqlglot (25.5.1)
  • Installing tomlkit (0.12.5)
  • Installing alembic (1.13.2)
  • Installing asyncpg (0.29.0)
  • Installing bcrypt (3.1.7)
  • Installing black (23.12.1)
  • Installing behave (1.2.6)
  • Installing fastapi-event (0.1.3)
  • Installing email-validator (1.3.1)
  • Installing passlib (1.7.4)
  • Installing gunicorn (20.1.0)
  • Installing pandasai (2.2.10)
  • Installing pylint (3.2.5)
  • Installing psycopg2 (2.9.9)
  • Installing pytest-asyncio (0.20.3)
  • Installing python-jose (3.3.0)
  • Installing python-multipart (0.0.9)
  • Installing pyyaml (6.0.1)
  • Installing uvicorn (0.20.0)

ChefBuildError

Backend subprocess exited when trying to invoke get_requires_for_build_wheel

running egg_info
writing psycopg2.egg-info/PKG-INFO
writing dependency_links to psycopg2.egg-info/dependency_links.txt
writing top-level names to psycopg2.egg-info/top_level.txt

Error: pg_config executable not found.

pg_config is required to build psycopg2 from source. Please add the directory
containing pg_config to the $PATH or specify the full executable path with the
option:

python setup.py build_ext --pg-config /path/to/pg_config build ...

or with the pg_config option in 'setup.cfg'.

If you prefer to avoid building psycopg2 from source, please install the PyPI
'psycopg2-binary' package instead.

For further information please check the 'doc/src/install.rst' file (also at
https://www.psycopg.org/docs/install.html).

at ~/.local/share/pypoetry/venv/lib/python3.11/site-packages/poetry/installation/chef.py:164 in _prepare
160�
161� error = ChefBuildError("\n\n".join(message_parts))
162�
163� if error is not None:
� 164� raise error from None
165�
166� return path
167�
168� def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:

Note: This error originates from the build backend, and is likely not a problem with poetry but with psycopg2 (2.9.9) not supporting PEP 517 builds. You can verify this by running 'pip wheel --no-cache-dir --use-pep517 "psycopg2 (==2.9.9)"'.

@dosubot dosubot bot added the bug Something isn't working label Jul 22, 2024
Copy link

dosubot bot commented Jul 22, 2024

To resolve the issue with the Docker build process failing during the RUN poetry install --no-root step due to the pg_config executable not being found when trying to install psycopg2, you need to install the libpq-dev package, which provides the pg_config executable.

You can modify your Dockerfile to include the installation of libpq-dev as follows:

# Use an official Python runtime as a parent image
FROM python:3.11-slim

# Set the working directory in the container
WORKDIR /app

# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    curl \
    make \
    libpq-dev \  # Add this line to install libpq-dev
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Install Poetry
RUN curl -sSL https://install.python-poetry.org | python3 -

RUN apt-get update && apt-get install netcat-openbsd -y 

# Add Poetry to PATH
ENV PATH="/root/.local/bin:$PATH"

# Copy the current directory contents into the container at /app
COPY . /app

RUN poetry lock --no-update

# Install Python dependencies
RUN poetry install --no-root

# Add wait-for-it.sh script to the container
COPY wait-for-it.sh /wait-for-it.sh

RUN chmod +x /wait-for-it.sh

# Make port 8000 available to the world outside this container
EXPOSE 8000

# Copy entrypoint script to the container
COPY startup.sh /startup.sh
RUN chmod +x /startup.sh

# RUN dos2unix startup.sh

# Run the entrypoint script
CMD ["/startup.sh"]

By adding libpq-dev to the list of system dependencies, the pg_config executable will be available, and the psycopg2 installation should proceed without issues [1].

To continue talking to Dosu, mention @dosu.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant