• DockerFile


    Dockerfile

    Dockerfile:是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像

    其实就是一个叫Dockerfile的文件里面写了一些命令

    基本命令

    #指定基于哪个镜像为基础
    FROM 镜像名字:镜像标签    FROM centos:centos7   
    #设置镜像作者
    MAINTAINER 作者             
    #环境变量
    ENV key value               
    要执行的命令
    RUN 命令                    
    #拷贝文件到镜像内(自动解压)
    ADD 文件路径            
    #拷贝文件到镜像内(不会自动解压)
    COPY 文件路径       
    #工作目录(工作的目录,一旦启动起容器来,进入,在的路径)
    WORKDIR 路径        
    

    案例

    构建一个django 1.11.9的镜像,内部装上requests模块,在home目录下创建一个test文件夹,传一个a.txt到镜像中

    #注意不能空行
    FROM python:3.7
    MAINTAINER zx
    RUN pip install django==1.11.9
    RUN mkdir /home/test
    RUN pip install requests
    #把a.txt复制到home下
    ADD a.txt /home
    #进入容器就在home目录
    WORKDIR /home
    #容器对外暴露的端口
    EXPOSE 8080   
    #一旦启动容器,会执行该条命令,这条命令,必须是夯住的命令(一旦运行就不能执行其他命令的命令)
    CMD 命令             
    

    开始构建

    #构建:docker build -t='镜像名字' 
    docker build -t='django1.11.9' .
    
    #验证
    docker run -id --name=django1.11.9 django1.11.9:latest
    docker exec -it django1.11.9 /bin/bash
    

    项目部署

    通过uwsgi部署到容器中,起一个nginx容器,做转发

    #1 先把文件传到服务器解压
    
    #2 启动一个容器,做目录挂载,和端口映射
    docker run -id -p 8088:8088 -v /root/djangotest:/home --name=my_django_test python:3.6
    
    #3 进入容器
    docker exec -it 92c /bin/bash
    
    #4 安装django环境
    pip install django==1.11.9
    
    #5 运行项目,用的是wsgiref
    python manage.py runserver 0.0.0.0:8088    
    
    #6 通过uWSGI跑项目
    安装uwsgi:pip install uwsgi
    vim uwsgi.ini
    #写入
    [uwsgi]
    #配置和nginx连接的socket连接
    #配置的是socket就不能直接访问,要配合nginx
    socket=0.0.0.0:8080
    #也可以使用http
    #http=0.0.0.0:8080
    #配置项目路径,项目的所在目录
    chdir=/home/untitled3
    #配置wsgi接口模块文件路径
    wsgi-file=untitled3/wsgi.py
    #配置启动的进程数
    processes=4
    #配置每个进程的线程数
    threads=2
    #配置启动管理主进程
    master=True
    #配置存放主进程的进程号文件
    pidfile=uwsgi.pid
    #配置dump日志记录
    daemonize=uwsgi.log
    
    启动
    uwsgi --ini uwsgi.ini 
    uwsgi --stop uwsgi.pid    #停止
    kill -9 进程杀死
    查看是否启动
    ps aux |grep uwsgi
    
    #7 用nginx转发
    docker pull nginx
    #创建一些目录
    mkdir -p nginx/conf nginx/html nginx/logs
    
    #新建配置文件
    在conf目录下新建nginx.conf
    
    ​```配置
    
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
        	#ngnix监听端口
            listen       80;
            server_name  localhost;
            location / {
              #方式一
              # 导入一个Nginx模块他是用来和uWSGI进行通讯的
              #include uwsgi_params; 
              #uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
              #uwsgi_pass 101.133.225.166:8080;
              #方式二
              # 导入一个Nginx模块他是用来和uWSGI进行通讯的
              #include uwsgi_params;
              # 指定uwsgi的sock文件所有动态请求
              #uwsgi_pass unix:///var/www/script/uwsgi.sock; 
              #方式三
              #转发的地址
              proxy_pass http://101.133.225.166:8088
        
            }  
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    ​```
    
    #运行nginx容器,完成端口映射和3个目录映射
    docker run --name mynginx -id -p 80:80 -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/html:/etc/nginx/html -v /root/nginx/logs:/var/log/nginx nginx
    
    在外部浏览器访问宿主机ip地址80端口,就可以访问项目了
    

    动静分离

     #收集静态文件,把所有的静态js,css,图片收集到一个文件夹中
     python manage.py collectstatic   
     #把这个文件夹单独放到一个地址,用nginx转发,做动静分离
     192.168.1.11/static/head.pngs
    
  • 相关阅读:
    删除排序链表中的重复元素
    动态规划之爬楼梯问题
    外行小白的modbus惊心之旅
    SSM框架整合
    我与404的不解之缘系列(一)记录一个智障一般的错误
    day 06 作业
    day 06 文件查看查找与上传下载
    linux 防火墙查看firewall
    linux 变量详情
    day05作业练习题
  • 原文地址:https://www.cnblogs.com/zx125/p/12715770.html
Copyright © 2020-2023  润新知