欢迎光临
我们一直在努力

Dockerfile编写,容器部署项目,用nginx做负载均衡,私有仓库搭建

1 dockerfile编写

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像,用来构建镜像的 # docker pull # 通过容器---》打包成镜像--》压缩--》拿到任何位置 # 通过Dockerfile构建镜像 1、对于开发人员:可以为开发团队提供一个完全一致的开发环境; 2、对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了; 3、对于运维人员:在部署时,可以实现应用的无缝移植。 命令 作用 FROM image_name:tag 定义了使用哪个基础镜像启动构建流程 # 镜像名字,基于哪个镜像构建的 MAINTAINER user_name 声明镜像的创建者 ENV key value 设置环境变量 (可以写多条) RUN command 是Dockerfile的核心部分(可以写多条) # 写要执行的命令(centos上装一个python3.6,原来在linux上装python,如何操作,就用命令一行一行写出来) RUN wget http://www..../python.tar.gz RUN tar -cvf python.tar.gz RUN cd python RUN make && make install RUN pip3 install django==1.11.9 ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件并不能解压 WORKDIR path_dir 设置工作目录(docker exec 进去,就在当前设置的路径下 / ) CMD [命令] 容器一运行,就会执行命令 # ADD和COPY的区别?一个会解压,一个默认不会解压 # 写一个Dockerfile,基于python3.6 搭建运行环境:django,drf,uwsgi # 名字必须交 Dockerfile ,当你构建的时候,会在当前路径下找这个文件,自动构建 vim Dockerfile FROM python:3.6 MAINTAINER alen ADD ./django_test.tar /home RUN pip install -r /home/django_test/requirement.txt -i https://pypi.doubanio.com/simple CMD ["/bin/bash"] # 基于docker file构建 docker build -t='django1.11.9' . # 本地就会有一个基于dockerfile,构建的镜像 docker run -di --name=myproject -p 8080:8080 django1.11.9 进入到容器,启动项目:python manage.py runserver 0.0.0.0:8080 json模块3.5之前 不支持loads bytes格式 json模块3.6以后,loads bytes格式就可以 你同事写的代码,拉倒你本地,一运行,走到一个地方就报错,因为json loads的时候出了错,3.5环境,排查没发现问题, 去源码看,发现源码根本不支持loads bytes格式,他点开源码看到是支持的,在他机器上没问题, 3.6 ,3.5 

2 容器部署项目,用nginx做负载均衡

# 1 在项目路径下写Dockerfile FROM python:3.6 MAINTAINER lqz ADD ./requirement.txt /home/ RUN pip install -r /home/requirement.txt -i https://pypi.douban.com/simple/ WORKDIR /home/django_test EXPOSE 8080 VOLUME ["/home"] CMD ["uwsgi", "--ini", "/home/django_test/uwsgi.ini"] # 2 在项目路径下写一个uwsgi.ini [uwsgi] #也可以使用http http=0.0.0.0:8080 #配置项目路径,项目的所在目录 chdir=/home/django_test #配置wsgi接口模块文件路径 wsgi-file=django_test/wsgi.py #配置启动的进程数 processes=4 #配置每个进程的线程数 threads=2 #配置启动管理主进程 master=True #配置存放主进程的进程号文件 pidfile=uwsgi.pid # 3 传到git上(我们直接复制过去了) 在服务器从git上拉下来,解压开 # 4 基于docker file构建镜像 docker build -t='django1.11.9' . #5 运行起django+uwsgi的容器 docker run -di --name=mydjango1 -v /home/s13/myproject:/home -p 8080:8080 django1.11.9 docker run -di --name=mydjango2 -v /home/s13/myproject2:/home -p 8088:8080 django1.11.9 # 6 基于ngixn镜像跑起一个容器来,做目录映射(在宿主机,修改nginx的配置文件) # 创建几个文件夹 mkdir -p /home/nginx/conf /home/nginx/html /home/nginx/logs vim /home/nginx/conf/nginx.conf #写入 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream node { server 10.0.0.200:8080; server 10.0.0.200:8088; } server { listen 80; server_name localhost; location / { #负载均衡配置 proxy_pass http://node; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } docker run --name nginx -id -p 80:80 -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/html:/etc/nginx/html -v /home/nginx/logs:/var/log/nginx nginx #7 访问http://101.133.225.166/, 会打到不通的docker容器内,即便有一个服务停了,也不会影响项目的运行 # 因为你django docker容器做了目录映射---》只需要修改代码,重启容器即可(git pull 即可) # 不停服更新,停一半,更新,启动--在把另一半更新了 # 停服更新 

3 私有仓库搭建

# 镜像获取: docker pull dockerfile构建 拷贝tar文件,load过来 # 公司内部用的镜像,docker hub上没有,私服(私有服务器) # 操作步骤 # 1 拉一个registry镜像 (本质是个什么?web服务(想像成 web项目在里面)) docker pull registry # 2 跑起容器来 docker run -di --name=registry -p 5000:5000 registry # 3 浏览器输入地址(目前是空的) http://宿主机:5000/v2/_catalog http://10.0.0.200:5000/v2/_catalog # 4 vi /etc/docker/daemon.json (文件如果没有就创建出来),以后docker pull 先从自己配置的这个拉,再去远程拉 {"insecure-registries":["10.0.0.200:5000"]} # 5 重启docker 服务 systemctl restart docker "storage-driver":"devicemapper" # 6 启动容器 docker restart registry # 7 标记本地的镜像(可能是dockerfile构建的,也可能是通过容器打包成的) docker tag django1.11.9 10.0.0.200:5000/django1.11.9 # docker tag redis 10.0.0.200:5000/myredis # 8 把标记好的本地镜像,传到私服 docker push 10.0.0.200:5000/django1.11.9 # docker push 10.0.0.200:5000/myredis # 9 再访问这个地址http://宿主机:5000/v2/_catalog 就能看到你上次的镜像再里面了 # 10 只要在etc/docker/daemon.json,配置了这个{"insecure-registries":["10.0.0.200:5000"]} 的所有小伙伴,都可以拉取我上传的镜像 docker pull 10.0.0.200:5000/myredis # 公司可能没有私服,直接通过dockerfile构建 # 大一点的公司,搭建私有仓库,里面放了一些镜像(不让你去docker hub下了,直接只从私有仓库下载) 私服传奇 大哥传奇,一刀传奇 现成的代码,只需要买台服务器,部署上就行了(只要有用户,充钱,就冲在你那里),利润非常非常高,请到一些明星代言 安卓修改器,apk解压,修改源代码,把原来的服务器地址,改成你的就可以了 安卓的破解软件多,安卓逆向 

Only you can control your future You're not alone. You still have family,peopel who care for you and want to save you.

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《Dockerfile编写,容器部署项目,用nginx做负载均衡,私有仓库搭建》
文章链接:https://www.456zj.com/38224.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址