我有一个使用Docker Compose创建的Django环境,并且我试图使用manage.py collectstatic
将我站点的静态文件复制到容器。这个目录(/ usr/src/app/static)也是一个Docker卷。“docker-compose运行”命令后,卷更改不会持久(Django的collectstatic)
建设我的Docker容器(docker-compose build
)后,我跑docker-compose run web python manage.py collectstatic
,预期其工作原理,但我的Web服务器(Nginx的)未找到文件,也没有任何文件,当我运行docker-compose run web ls -la /usr/src/app/static
。
关于我在做什么错的任何想法? (注意:我的Dockerfile中没有manage.py collectstatic
,因为我的设置需要加载我的“.env”文件,并且我没有看到在Dockerfile中加载这个文件的方法。无论哪种情况,我都希望知道为什么,因为我也期待泊坞撰写不工作)
这里是我的配置文件:
## docker-compose.yml:
web:
restart: always
build: .
expose:
- "8000"
links:
- postgres:postgres
volumes:
- /usr/src/app/static
- .:/code
env_file: .env
command: /usr/local/bin/gunicorn myapp.wsgi:application -w 2 -b :8000 --reload
nginx:
restart: always
build: ./config/nginx
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- web
links:
- web:web
postgres:
restart: always
image: postgres:latest
volumes:
- /var/lib/postgresql
ports:
- "5432:5432"
## Dockerfile:
FROM python:3.4.3
RUN mkdir /code
WORKDIR /code
ADD . /requirements/ /code/requirements/
RUN pip install -r /code/requirements/docker.txt
ADD . /code/
对于那些希望在Django中使用Compose的人,我在相关的SO帖子中有一个更新的例子:http://stackoverflow.com/a/36726663/318870 –