Dol*_*cci 4 django docker docker-compose
我有一个使用Docker Compose创建的Django环境,我正在尝试manage.py collectstatic
将我的站点的静态文件复制到容器中的目录.这个目录(/ usr/src/app/static)也是一个Docker Volume.
在构建我的docker containers(docker-compose build
)之后,我运行docker-compose run web python manage.py collectstatic
,它按预期工作,但我的Web服务器(Nginx)没有找到文件,我运行时也没有任何文件docker-compose run web ls -la /usr/src/app/static
.
关于我做错了什么的任何想法?
(注意:manage.py collectstatic
我的Dockerfile中没有,因为我的设置需要加载我的".env"文件,我没有看到在Dockerfile中加载它的方法.在任何一种情况下,我想知道为什么Docker Compose不起作用,因为我期待它.)
这是我的配置文件:
## 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/
Run Code Online (Sandbox Code Playgroud)
运行docker-compose run ...
启动一个新容器并在那里执行命令.然后当你运行docker-compose up
它时创建另一个新容器......它没有你上一个命令的更改.
您要做的是启动一个数据容器来保存静态文件.将另一个容器添加到您的撰写文件中,如下所示...
web-static:
build: .
volumes:
- /usr/src/app/static
env_file: .env
command: manage.py collectstatic
Run Code Online (Sandbox Code Playgroud)
并将web-static添加到nginx容器的'volumes-from'列表中
归档时间: |
|
查看次数: |
2231 次 |
最近记录: |