首页 > 其他分享 >【Docker-compose】django不分离项目

【Docker-compose】django不分离项目

时间:2024-01-26 16:44:20浏览次数:20  
标签:compose media graduation django nginx static usr Docker

文件/文件夹 - 映射


# django在处理数据库或者媒体文件持久时需要用到
# nginx在读取媒体文件的时候需要用到

1: 移动静态文件(static media db.sqlite3等) 到定义的宿主机路径: /usr/graduation下

   -- /usr/graduation/static
   -- /usr/graduation/media
   -- /usr/graduation/db.sqlite3
   

docker-compose


# 配置django与nginx的映射磁盘文件,以及启动容器的配置镜像,方便后面的读取

version: '3.4'
services:

  django:
    image: graduation-web
    build:
      context: .
    container_name: graduation-web
    volumes:
      # 宿主机路径      :    容器路径
      - /usr/graduation/static:/apps/graduation/static
      - /usr/graduation/media:/apps/graduation/media
      - /usr/graduation/db.sqlite3:/apps/graduation/db.sqlite3
    ports:
      - 端口号:端口号

  nginx:
    image: nginx
    restart: always
    container_name: graduation-nginx
    ports:
      - 80:80
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf  # 映射配置文件
      # nginx与django的静态文件映射到宿主机的路径要一致
      - /usr/graduation/media:/media      # 映射到容器里面的/media    nginx.conf的访问路径要跟这个一样
      - /usr/graduation/static:/static    # 映射到容器里面的/static   nginx.conf的访问路径要跟这个一样
    depends_on:
      - django

Dockerfile


# 配置容器里面的django环境

FROM python:3.9

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /apps

COPY . /apps/graduation/

COPY ./static /static

WORKDIR /apps/graduation/

RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

RUN chmod +x /apps/graduation/ready.sh

# 需要配置启动脚本  SH
CMD ["/bin/sh", "/apps/graduation/ready.sh"]

ready.sh


# 数据库连接,迁移操作,以及django使用graduation启动

echo "==============> 测试数据库连接"
python manage.py makemigrations
python manage.py migrate

echo "==============> 迁移完成 启动程序"
exec gunicorn -c gunicorn_config.py graduation.wsgi:application
echo "==============> 完成"

gunicorn_config.py

# graduation启动时的参数配置

bind = "0.0.0.0:端口号"  
workers = 4               
timeout = 120

nginx.conf


# 配置nginx的反向代理端口与 静态文件访问路径

user  nginx;
worker_processes auto;  # 正确的位置

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/conf.d/*.conf;  # 这里包含了其他配置文件

    server {
        listen 80;
        server_name IP地址/域名;

        # 反向映射
        location / {
            proxy_pass http://IP地址/域名:端口号/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        # 映射静态文件 与 docker-compose 的容器路径一致
         location /static {
             alias /static;
         }
         location /media {
             alias /media;
         }

    }
}

标签:compose,media,graduation,django,nginx,static,usr,Docker
From: https://www.cnblogs.com/wanghong1994/p/17989694

相关文章

  • docker容器日志输出到es
    1、安装插件dockerplugininstallelastic/elastic-logging-plugin:8.11.32、修改/etc/docker/daemon.json  {"registry-mirrors":["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com","https://docker.mirrors.u......
  • docker安装宝塔面板并跳过强制绑定账号
    1.下载镜像dockerpullbtpanel/bt2.启动dockerrun-itd--net=host--restart=always-v/data/app:/opt--namebaotacyberbolt/baota:latest这里映射目录是为了上传的文件,宿主机可以看到3.跳过强制绑定账号:进入容器执行下面脚本rm-rf/www/server/panel/dat......
  • 基于djangoadmin开发,如何新用户自动创建token
    可以使用Python的secrets模块来生成一个包含大写字母和数字的32位token。以下是一个简单的例子:importsecretsimportstringdefgenerate_token():alphabet=string.ascii_uppercase+string.digitstoken=''.join(secrets.choice(alphabet)for_inrange(32))......
  • docker run 共享host网络
    最近在尝试tensorrt-llm,它需要dockerrun一个container,但我在container内部没法从github上下项目。$docker--versionDockerversion24.0.5,build24.0.5-0ubuntu1~22.04.1解决方法:将本机的网络代理修改成global模式连接rundocker的时候输入:dockerrun-it--......
  • CentOS 安装docker教程
    第一步执行sudoyuminstall-yyum-utils安装工具包执行后报错:adminisnotinthesudoersfile.Thisincidentwillbereported.解决办法:1>、进入超级用户模式。也就是输入"su-",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式。2>、添加文件的写权......
  • 了解docker
    快速入门视频参考:BV11L411g7U1,资料:https://docker.easydoc.net:主windows平台虚拟机环境基础镜像:ubuntu-22.04.3-desktop-amd64.iso安装os时配置:中文简体,NAT网络登录,4G内存,100G磁盘,仅作为参考基础配置如下:#1.设置超级用户密码,之后始终以超级用户登录sudopasswdroot#设置......
  • 使用docker部署编译环境并使用gitlab-ci实现代码自动打包
    使用docker部署编译环境并使用gitlab-ci实现代码自动打包一、需求1、需求描述实现代码git仓库提交能够自动编译出结果①需要一个编译环境能够共享编译:使用docker创建镜像来维护,创建完毕无需频繁修改②使用gitlab的ci进行持续继承,代码提交自动打包,ci中会使用①中的镜像作为运......
  • djangoadmin如何实现用户注册或新增后自动分配到某个组
    默认后台设置多个组,当后台新增或通过前台注册新用户后,自动分配到普通用户组以获取对应的权限,方便管理。大概意思就是这样:要实现在DjangoAdmin开发中,将新增用户或新注册的用户自动分配到某个组中,可以使用信号(signal)来完成。在对应的app下新建一个文件如signal.py:fromdjango......
  • django框架的使用及其梳理系列二
    路由源码流程#urls.py中ctrl+鼠标点击path=partial(_path,Pattern=RoutePattern)#partial的功能:fromfunctoolsimportpartialdef_path(v1,v2,v3):returnv1+v2+v3path=partial(_path,v3=55)print(path(11,22))_path:def_path(route,view,kwargs......
  • 【docker-compose】ElasticSearch安装教程
    仅供学习参考,请勿轻易在生产环境使用0.目录树1.创建目录mkdir-p/docker/elasticsearch/conf/docker/elasticsearch/data/docker/elasticsearch/logschmod-R777/docker/elasticsearch/conf/docker/elasticsearch/data/docker/elasticsearch/logs2.编写配置......