ここでDockerの新人は、Composeを使って簡単なDjangoプロジェクトをセットアップしようとしています。私はsuccess with this in the pastを持っていましたが、今度は別のセットアップを試しています。なぜ動作しないのか分かりません。docker-staticボリュームを使ってdjangoの静的ファイルを扱うことに混乱しています
私は、次のドッキングウィンドウ-compose.ymlファイルがあります:
data:
image: postgres:9.4
volumes:
- /var/lib/postgresql
command: /bin/true
db:
image: postgres:9.4
restart: always
expose:
- "5432"
volumes_from:
- data
app:
build: .
restart: always
env_file: .env
expose:
- "8000"
links:
- db:db
volumes:
- .static:/static_files
web:
build: docker/web
restart: always
ports:
- "80:80"
links:
- app:app
volumes_from:
- app
マイ/ Dockerfileは次のとおりです。
FROM python:3.5
ENV PYTHONUNBUFFERED 1
ADD . /app
WORKDIR /app
RUN pip install -r requirements.txt
RUN SECRET_KEY=tmpkey python manage.py collectstatic --noinput
CMD gunicorn mysite.wsgi:application -b 0.0.0.0:8000
マイ/ドッキングウィンドウ/ウェブ/ Dockerfileは次のとおりです。
FROM nginx:1.9
RUN rm /etc/nginx/conf.d/default.conf
ADD default.conf /etc/nginx/conf.d/
を私の/docker/web/default.confファイルは:
server {
listen 80 default_server;
location /static/ {
autoindex on;
alias /static_files/;
}
location/{
proxy_pass http://app:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
ドッカーの出力は/ static_filesにインストールされている静的ファイルを表示しますが、nginxは/ staticの下にあるすべてのファイルに対して404を返します。私の.staticフォルダ(プロジェクトのルート)を見ると、ディレクトリは空です(そこにある.gitkeepファイルを除いて)。 docker-compose app run ls -la /static_files
を実行すると、ディレクトリは空ですが、docker-compose app run ls -la /app/.static
に.gitkeepファイルがあります。明らかに私はDockerとComposeで何かを誤解しています。私が間違ってやっていることに関する考えは?私の理解は、RUN SECRET_KEY=tmpkey python manage.py collectstatic --noinput
がローカルの.staticフォルダにファイルを書き込む必要があり、nginxはこれらのファイルを参照する必要があります。どちらも起こっていない。
ソフトウェアのバージョン:docker-composeバージョン1.7.0、build 0d7bf73およびDockerバージョン1.11.0、OS Xでビルド4dc5990、ドッカーマシンがクラウドインスタンスに接続されています。