这是我第一次使用Caddy,我在配置静态文件时遇到了困难。
我正在使用Ubuntu服务器,并将Caddy和Django+Gunicorn作为Docker容器运行。
它工作得很好,除了它给了一个404静态文件,如CSS和JS文件。
我已经将所有静态文件收集到/home/myusername/static中的相应目录中,并具有以下Caddyfile:
mydomain.com {
encode gzip
handle_path /static/* {
root * "/home/myusername/static/"
file_server
}
handle_path /media/* {
root * "/home/myusername/media/"
file_server
}
reverse_proxy django-gunicorn-container-name:8000
}
字符串
我应该怎么做才能让Caddy正确地服务静态文件?
任何建议将不胜感激!谢谢!
编辑:我使用下面的Dockerfile和Docker-compose.yml
Dockerfile:
FROM python:latest
EXPOSE 8000
WORKDIR /pairs_trade_front_end_docker
COPY . .
RUN apt-get update
RUN pip install --upgrade pip
RUN pip3 install -r requirements.txt
CMD ["/bin/bash", "-c", "nohup python3 manage.py collectstatic --noinput & nohup python3 manage.py migrate & gunicorn -b 0.0.0.0:8000 setup.wsgi:application"]
型
docker-compose.yml:
version: '3.9'
services:
database:
image: 'postgres:latest'
container_name: postgres
ports:
- 5432:5432
volumes:
- ~/postgres-data/:/var/lib/postgresql/data/
- ./logs:/logs
- ./postgresql.conf:/etc/postgresql.conf
env_file:
- .env
networks:
stats-trade-network:
aliases:
- postgresForStatsTrade
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
webserver:
image: 'antoniorcampos/pairs-trade:0.9'
container_name: stats-trade-web-server
ports:
- 8000:8000
volumes:
- ~/static:/static
env_file:
- .env
networks:
stats-trade-network:
aliases:
- webserverForStatsTrade
depends_on:
database:
condition: service_healthy
restart: unless-stopped
caddy:
image: caddy:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
networks:
stats-trade-network:
aliases:
- caddyForStatsTrade
depends_on:
webserver:
condition: service_started
database:
condition: service_healthy
restart: unless-stopped
networks:
stats-trade-network:
driver: bridge
型
然后我用一个基本的Linux命令行cp -r ...
把静态文件复制到/home/myusername/static。
1条答案
按热度按时间8wtpewkr1#
问题:将
static
文件夹作为卷挂载到stats-trade-container
中,以便应用程序可以访问static
。但是,您没有将static
文件夹挂载到Caddy容器中。将docker-compose.yml的Caddy部分更改为如下(注意卷部分的第二行):字符串
现在Caddy可以访问静态文件,并在文件夹/www/html中看到它们。接下来,更改Caddyfile以将Caddy指向该文件夹而不是/home/username..
型
这些变化应该使它工作。
附言:从Caddyfile中,看起来你想对“media”文件夹做一些类似的事情。你可以用类似的方法来做,只是把它指向一个不同于/www/html的位置(例如/media)。