当我构建容器并检查应该被忽略的文件时,它们中的大多数都没有被忽略。
这是我的文件夹结构。
Root/
data/
project/
__pycache__/
media/
static/
app/
__pycache__/
migrations/
templates/
.dockerignore
.gitignore
.env
docker-compose.yml
Dockerfile
requirements.txt
manage.py
假设我想忽略__pycache__& data(docker-compose up创建容器时将使用命令创建数据)文件夹和.gitignore&.env文件。
我将在下一个.dockerignore文件中忽略这些
.git
.gitignore
.docker
*/__pycache__/
**/__pycache__/
.env/
.venv/
venv/
data/
最终的结果是只有git&.env文件被忽略了。数据文件夹未被忽略,但无法从容器中访问。文件夹也__pycache__没有被忽略。
这是泊坞窗文件。
码头工人-compose.yml
version: "3.8"
services:
app:
build: .
volumes:
- .:/django-app
ports:
- 8000:8000
command: /bin/bash -c "sleep 7; python manage.py migrate; python manage.py runserver 0.0.0.0:8000"
container_name: app-container
depends_on:
- db
db:
image: postgres
volumes:
- ./data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=${DB_NAME}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
container_name: postgres_db_container
Dockerfile
FROM python:3.9-slim-buster
ENV PYTHONUNBUFFERED=1
WORKDIR /django-app
EXPOSE 8000
COPY requirements.txt requirements.txt
RUN apt-get update \
&& adduser --disabled-password --no-create-home userapp \
&& apt-get -y install libpq-dev \
&& apt-get -y install apt-file \
&& apt-get -y install python3-dev build-essential \
&& pip install -r requirements.txt
USER userapp