Я продолжаю следовать книге «Django для профессионалов», но сталкиваюсь с той же проблемой, с которой автор книги столкнулся в этом вопросе. Я использую его на windows, поэтому с Docker -toolbox и, кажется, происходит следующее: после запуска
docker-compose exec web pipenv install psycopg2-binary==2.8.4
файл Pipfile.lock изменился внутри контейнера, но он не переносится / syn c это для моих локальных файлов, кажется, что «том» потерял след файла?
Я открыл Pipfile.lock внутри контейнера, чтобы убедиться, что он действительно добавил psycopg2, который он сделал, но когда я docker-compose down
это не в моем локальном Pipfile.lock и, следовательно, потерял в следующий раз, когда я использую docker-compose up -d --build
Единственное решение, которое я нашел до сих пор, это скопировать файл поверх из работающего контейнера docker в мою локальную папку, с которой далеко не идеально
docker cp web:/code/Pipfile.lock .
вывод из docker-compose exec web pipenv install psycopg2-binary==2.8.4
E:\Documenten\websites\code\postgresql>docker-compose exec web pipenv install
psycopg2-binary==2.8.4
Installing psycopg2-binary==2.8.4…
Adding psycopg2-binary to Pipfile's [packages]…
✔ Installation Succeeded
Installing dependencies from Pipfile.lock (a06fa0)…
? ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 5/5 — 00:00:09
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
docker -compose.yml
version: '3.7'
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- 8000:8000
depends_on:
- db
db:
image: postgres:11
environment:
- "POSTGRES_HOST_AUTH_METHOD=trust"
Dockerfile
# Pull base image
FROM python:3.7-slim
# Set environment variables
ENV PYTHDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set work directory
WORKDIR /code
# Install dependencies
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system
# Copy project
COPY . /code/
# Make executable
RUN chmod +x /code/manage.py