gpt4 book ai didi

python - 使用docker时无法使用pipenv安装软件包

转载 作者:行者123 更新时间:2023-12-02 18:47:52 25 4
gpt4 key购买 nike

我正在将cookiecutter-django与pipenv设置为一个项目。我正在尝试使用docker,但是我收到了ERROR: Service 'django' failed to build: The command '/bin/sh -c pipenv install' returned a non-zero code: 1的错误消息。

要运行docker,我使用了以下命令

docker-compose -f local.yml up -d

这是我的 docker 文件

本地文件
version: '3'

volumes:
local_postgres_data: {}
local_postgres_data_backups: {}

services:
django: &django
build:
context: .
dockerfile: ./compose/local/django/Dockerfile
image: tryavel_local_django
depends_on:
- postgres
- mailhog
volumes:
- .:/app
env_file:
- ./.envs/.local/.django
- ./.envs/.local/.postgres
ports:
- "8000:8000"
command: /start

postgres:
build:
context: .
dockerfile: ./compose/production/postgres/Dockerfile
image: tryavel_production_postgres
volumes:
- local_postgres_data:/var/lib/postgresql/data
- local_postgres_data_backups:/backups
env_file:
- ./.envs/.local/.postgres

mailhog:
image: mailhog/mailhog:v1.0.0
ports:
- "8025:8025"

redis:
image: redis:5.0

celeryworker:
<<: *django
image: tryavel_local_celeryworker
depends_on:
- redis
- postgres
- mailhog
ports: []
command: /start-celeryworker

celerybeat:
<<: *django
image: tryavel_local_celerybeat
depends_on:
- redis
- postgres
- mailhog
ports: []
command: /start-celerybeat

flower:
<<: *django
image: tryavel_local_flower
ports:
- "5555:5555"
command: /start-flower

撰写/本地/ Django / Dockerfile
FROM python:3.7-alpine

ENV PYTHONUNBUFFERED 1

RUN apk update \
# psycopg2 dependencies
&& apk add --virtual build-deps gcc python3-dev musl-dev \
&& apk add postgresql-dev \
# Pillow dependencies
&& apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \
# CFFI dependencies
&& apk add libffi-dev py-cffi \
# Translations dependencies
&& apk add gettext \
# https://docs.djangoproject.com/en/dev/ref/django-admin/#dbshell
&& apk add postgresql-client

# Requirements are installed here to ensure they will be cached.
RUN pip3 install --upgrade pip
RUN pip3 install pipenv
COPY Pipfile* /app/
RUN pipenv install
# COPY ./requirements /requirements
# RUN pip install -r /requirements/local.txt

COPY ./compose/production/django/entrypoint /entrypoint
RUN sed -i 's/\r$//g' /entrypoint
RUN chmod +x /entrypoint

COPY ./compose/local/django/start /start
RUN sed -i 's/\r$//g' /start
RUN chmod +x /start

COPY ./compose/local/django/celery/worker/start /start-celeryworker
RUN sed -i 's/\r$//g' /start-celeryworker
RUN chmod +x /start-celeryworker

COPY ./compose/local/django/celery/beat/start /start-celerybeat
RUN sed -i 's/\r$//g' /start-celerybeat
RUN chmod +x /start-celerybeat

COPY ./compose/local/django/celery/flower/start /start-flower
RUN sed -i 's/\r$//g' /start-flower
RUN chmod +x /start-flower

WORKDIR /app

ENTRYPOINT ["/entrypoint"]

为什么我会收到pipenv问题?

错误
Step 7/24 : RUN pipenv install
---> Running in bc10595bd5d2
Creating a virtualenv for this project?
Pipfile: /Pipfile
Using /usr/local/bin/python (3.7.3) to create virtualenv?
? Creating virtual environment...Already using interpreter /usr/local/bin/python
Using base prefix '/usr/local'
New python executable in /root/.local/share/virtualenvs/-x-v5uFv0/bin/python
Installing setuptools, pip, wheel...
done.

? Successfully created virtual environment!
Virtualenv location: /root/.local/share/virtualenvs/-x-v5uFv0
Creating a Pipfile for this project?
Traceback (most recent call last):
File "/usr/local/bin/pipenv", line 10, in <module>
sys.exit(cli())
File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 764, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/pipenv/cli/command.py", line 254, in install
editable_packages=state.installstate.editables,
File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 1741, in do_install
pypi_mirror=pypi_mirror,
File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 609, in ensure_project
validate=validate, skip_requirements=skip_requirements, system=system
File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 320, in ensure_pipfile
project.create_pipfile(python=python)
File "/usr/local/lib/python3.7/site-packages/pipenv/project.py", line 697, in create_pipfile
config_parser = ConfigOptionParser(name=self.name)
File "/usr/local/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/cli/parser.py", line 142, in __init__
assert self.name
AssertionError
ERROR: Service 'django' failed to build: The command '/bin/sh -c pipenv install' returned a non-zero code: 1
Failed to deploy 'Compose: local.yml': `docker-compose` process finished with exit code 1

当我改为使用 pipenv install --system命令时,出现以下错误
Step 7/24 : RUN pipenv install  --system
---> Running in b35f2bb70207
[pipenv.exceptions.PipenvOptionsError]: File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/decorators.py", line 17, in new_func
[pipenv.exceptions.PipenvOptionsError]: return f(get_current_context(), *args, **kwargs)
[pipenv.exceptions.PipenvOptionsError]: File "/usr/local/lib/python3.7/site-packages/pipenv/cli/command.py", line 254, in install
[pipenv.exceptions.PipenvOptionsError]: editable_packages=state.installstate.editables,
[pipenv.exceptions.PipenvOptionsError]: File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 1741, in do_install
[pipenv.exceptions.PipenvOptionsError]: pypi_mirror=pypi_mirror,
[pipenv.exceptions.PipenvOptionsError]: File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 609, in ensure_project
[pipenv.exceptions.PipenvOptionsError]: validate=validate, skip_requirements=skip_requirements, system=system
[pipenv.exceptions.PipenvOptionsError]: File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 282, in ensure_pipfile
[pipenv.exceptions.PipenvOptionsError]: "--system is intended to be used for pre-existing Pipfile
ERROR:: --system is intended to be used for pre-existing Pipfile installation, not installation of specific packages. Aborting.

最佳答案

您只需要在Dockerfile中使用CD到/ app

# Requirements are installed here to ensure they will be cached.
RUN pip3 install --upgrade pip
RUN pip3 install pipenv
COPY Pipfile* /app/
RUN cd /app && pipenv install

关于python - 使用docker时无法使用pipenv安装软件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57164656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com