详细解读docker部署项目

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 详细解读docker部署项目

1.通过docker部署django项目

1.创建一个django项目,将django项目提交到gitee

2.进入虚拟机的/opt目录下创建yessir文件夹,进入yessir文件夹,通过git clone将gitee仓库的项目拉下来

cd /opt

mkdir yessir

cd yessir

git clone

3.通过python3.6镜像启动一个python的容器,创建/project文件夹,并在里面安装djang1.11.11

docker run -di --name python3 python:3.6 # 通过镜像python3.6启动一个名为python3的容器

docker exec -it python3 bash # 进入容器python3

pip install django==1.11.11 # 在容器内安装django1.11.11

mkdir /project # 在容器内创建/project文件夹

exit # 退出容器

4.把宿主机中的项目拷贝到容器中(需要进入django项目所在的路径)

【root@yessir yessir1】# pwd # 输出结果为:/opt/yessir1

【root@yessir yessir】# docker cp django_test/ 95d5:/project/

5.把容器id为95d5的容器做成镜像

docker commit 95d5 mydjango # 把容器id为95d5的容器做成镜像,镜像名为mydjango

6.通过mydjango镜像运行实例出容器

docker run -di --name django_pro -p 8088:8088 mydjango python //代码效果参考:http://www.zidongmutanji.com/bxxx/146504.html

/project/django_test/manage.py runserver 0.0.0.0:8088

# 通过镜像mydjango进行端口映射 宿主机端口:容器端口 运行名为django_pro的容器,

# 后面可以跟执行的代码,但是路径必须配对,否则会报错

7.通过访问虚拟机ip:端口号 就能访问到该项目

2 dockerfile(很重要)

1.dockerfile本质

一个docker脚本文件,里面一堆指令,通过这个文件可以生成镜像,

2.dockerfile指令

命令 作用

FROM image_name:tag 定义了使用哪个基础镜像启动构建流程

MAINTAINER user_name 声明镜像的创建者

ENV key value 设置环境变量 (可以写多条)

RUN command 是Dockerfile的核心部分(可以写多条)

ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压

COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件并不能解压

WORKDIR path_dir 设置工作目录

Dockerfile部署django项目并用Nginx负载均衡

1.django项目中生成包含项目依赖包以及版本的requirements.txt文件

# requirements.txt

django==1.11.11

pymysql

2.在django项目下新建uwsgi.ini文件,输入配置内容

# uwsgi.ini

【uwsgi】

# 配置和nginx连接的socket连接

socket=0.0.0.0:8080

# 也可以使用http

# http=0.0.0.0:8080

# 配置项目路径,项目的所在路径

chdir=/home/docker_test

# 配置wsgi接口模块文件路径

wsgi-file=docker_test/wsgi.py

# 配置启动的进程数

processes=4

# 配置每个进程的线程数

threads=2

# 配置启动管理主进程

master=True

# 配置存放主进程的进程号文件

pidfile=uwsgi.pid

# 配置dump日志记录

daemonize=uwsgi.log

3.django项目中新建Dockerfile文件(名字必须叫Dockerfile),输入配置内容

# Dockerfile

FROM python:3.6

MAINTAINER yessir

EXPOSE 8080

ADD ./requirements.txt /home/

RUN pip install -r /home/requirements.txt -i

RUN pip install uwsgi -i

VOLUME 【"/home"】

WORKDIR /home/django_test

# CMD 【"uwsgi", "--ini", "/home/django_test/uwsgi.ini"】

CMD 【"python", "/home/django_test/manage.py", "runserver","0.0.0.0:8080"】

4.将django项目提交到gitte上(需要进入项目所在的路径下)

git init

git add .

git commit -m '项目初始化'

git remote add origin

git push -u origin master

5.在虚拟机中将django项目通过git clone从gitee上拉下来

cd /opt/

mkdir yessir

cd yessir

git clone

6.在虚拟机中构建镜像

cd /opt/yessir/django_test/

docker build -t mydjango:v1 .

# -t表示tag,也就是给构建的镜像命名,:v1表示定义版本为v1版本

# 通过当前目录下的Dockerfile构建一个名为mydjango的镜像,v1为版本号

# 注意不要忽略了v1后面的 . 否则会报错

7.查看镜像,通过镜像实例出容器

docker images

docker run -di --name django_pro -v /opt/yessir/django_test/:/homed/jango_test/ -p 8080:8080 mydjango:v1

docker run -di --name django_pro1 -v /opt/yessir/django_test/:/home/django_test/ -p 8081:8080 mydjango:v1

docker run -di --name django_pro2 -v /opt/yessir/django_test/:/home/django_test/ -p 8082:8080 mydjango:v1

8.通过访问宿主机对应端口即可访问到

9.通过Nginx转发

创建目录

mkdir -p /opt/nginx/conf /opt/nginx/html /opt/nginx/logs

新建Nginx配置文件

# 在nginx/conf文件夹下创建nginx.conf配置文件

vim /opt/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:8081;

server 10.0.0.200:8082;

}

server {

listen 80;

server_name localhost;

location / {

#proxy_pass

#负载均衡配置

proxy_pass

}

}

}

另起一个docker容器运行nginx

如果这里nginx转发不成功可能是因为mime.types文件不存在,需要复制一个过来,放到conf目录下

types {

text/html html htm shtml;

text/css css;

text/xml xml plist;

image/gif gif;

image/jpeg jpeg jpg;

application/javascript js;

application/atom+xml atom;

application/rss+xml rss;

text/mathml mml;

text/plain txt;

text/vnd.sun.j2me.app-descriptor jad;

text/vnd.wap.wml wml;

text/x-component htc;

image/png png;

image/svg+xml svg svgz;

image/tiff tif tiff;

image/vnd.wap.wbmp wbmp;

image/webp webp;

image/x-icon ico;

image/x-jng jng;

image/x-ms-bmp bmp;

application/font-woff woff;

application/java-archive jar war ear;

application/json json;

application/mac-binhex40 hqx;

application/msword doc;

application/pdf pdf;

application/postscript ps eps ai;

application/rtf rtf;

application/vnd.apple.mpegurl m3u8;

application/vnd.google-earth.kml+xml kml;

application/vnd.google-earth.kmz kmz;

application/vnd.ms-excel xls;

application/vnd.ms-fontobject eot;

application/vnd.ms-powerpoint ppt;

application/vnd.oasis.opendocument.graphics odg;

application/vnd.oasis.opendocument.presentation odp;

application/vnd.oasis.opendocument.spreadsheet ods;

application/vnd.oasis.opendocument.text odt;

application/vnd.openxmlformats-officedocument.presentationml.presentation

pptx;

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

xlsx;

application/vnd.openxmlformats-officedocument.wordprocessingml.document

docx;

application/vnd.wap.wmlc wmlc;

application/x-7z-compressed 7z;

application/x-cocoa cco;

application/x-java-archive-diff jardiff;

application/x-java-jnlp-file jnlp;

application/x-makeself run;

application/x-perl pl pm;

application/x-pilot prc pdb;

application/x-rar-compressed rar;

application/x-redhat-package-manager rpm;

application/x-sea sea;

application/x-shockwave-flash swf;

application/x-stuffit sit;

application/x-tcl tcl tk;

application/x-x509-ca-cert der pem crt;

application/x-xpinstall xpi;

application/xhtml+xml xhtml;

application/xspf+xml xspf;

application/zip zip;

application/octet-stream bin exe dll;

application/octet-stream deb;

application/octet-stream dmg;

application/octet-stream iso img;

application/octet-stream msi msp msm;

application/octet-stream apk ipa;

audio/midi mid midi kar;

audio/mpeg mp3;

audio/ogg ogg;

audio/x-m4a m4a;

audio/x-realaudio ra;

video/3gpp 3gpp 3gp;

video/mp2t ts;

video/mp4 mp4;

video/mpeg mpeg mpg;

video/quicktime mov;

video/webm webm;

video/x-flv flv;

video/x-m4v m4v;

video/x-mng mng;

video/x-ms-asf asx asf;

video/x-ms-wmv wmv;

video/x-msvideo avi;

}

mime.types文件内容

docker run -di --name nginx -p 8888:80 -v /opt/nginx/conf/nginx.conf:/etc/conf/nginx.conf -v /opt/nginx/html:/etc/nginx/html -v /opt/nginx/logs:/var/log/nginx nginx

# 通过nginx进行端口转发 然后将不同的文件映射到docker容器中对应的文件路径下

多启动几个docker容器

docker run -di --name=mydjango3 -v /opt/yessir/django_test2/:/home/django_test/ -p 8081:8080 django_1.11.11

docker run -di --name=mydjango4 -v /opt/yessir/django_test2/:/home/django_test/ -p 8082:8080 django_1.11.11

# 重启nginx

# 假设8081的容器挂了,8080的容器挂了,正常提供服务,

# 再把docker容器启动起来即可

docker-compose

下载官网:

docker-compose是一个单机情况下容器编排的工具。

通过yml文件定义多个容器

通过一条命令根据yml去创建、管理这些容器

默认名字:docker-compose.yml

三个概念:Service、Networks、Volumes

一个service代表一个container,这个container可以从docker hub的image来创建,或者从本地dockerfile build的image来创建。

container创建的两种方式:

# 方式一:

1.利用docker hub的image来创建

# 方式二:

2.从本地的dockerfile build的image来创建

docker-compose有三个版本:1,2,3,目前都用"3"版本

5.1 安装

1.下载

Docker Compose 存放在Git Hub,不太稳定。 你可以也通过执行下面的命令,高速安装Docker Compose。

curl -L -s-uname -m` > /usr/local/bin/docker-compose

2.通过上面的命令,安装完Docker Compose后,该文件是不可执行的,所以我们需要给他添加上可执行的权限

chmod +x /usr/local/bin/docker-compose

3.校验是否安装成功

docker-compose -v # 查看版本

5.2 docker-compose.yml如何配置

建议:在pycharm中创建:docker-compose.yml 文件来书写,会有提示

docker-compose.yml 如何写

version: '3'

services:

wordpress:

image: wordpress

ports:

- 8080:80

environment:

WORDPRESS_DB_HOST: mysql

WORDPRESS_DB_PASSWORD: root

volumes:

- mysql-data:/var/lib/mysql

3 docker-compose部署多应用

通过docker-compose部署flask,redis

1.创建Dockerfile

vim Dockerfile

Dockerfile配置

FROM python:3.6

COPY . /app

WORKDIR /app

RUN pip install flask redis

EXPOSE 5000

CMD 【 "python", "app.py" 】

2.创建docker-compose.yml 文件

注意:yml类型的文件,要求每个冒号 : 和每个 - 符号后面必须有一个空格,否则会报错

vim docker-compose.yml

docker-compose.yml 配置

version: "3"

services:

redis:

image: redis

web:

build:

context: .

dockerfile: Dockerfile

ports:

- 8080:5000

//代码效果参考:http://www.zidongmutanji.com/zsjx/524339.html

environment:

REDIS_HOST: redis

3.创建app.py

vim app.py

在 app.py 内书写代码

相关文章
|
8天前
|
监控 文件存储 Docker
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
与电脑不同,NAS通常7x24小时运行,便于下载资源,解决BT/PT下载需长时间在线的问题。因此,qBittorrent、Transmission等下载管理工具成为NAS用户的必备应用。通过Docker,用户可在多种NAS设备上快速安装这些工具,并通过局域网IP地址+端口访问。然而,缺乏公网IPv4地址导致远程访问困难,贝锐花生壳提供了解决方案,允许无公网IP情况下通过固定域名远程访问NAS中的下载工具,简化了部署过程,使用户能随时随地控制家中的下载任务。
98 33
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
|
27天前
|
Kubernetes Java Docker
利用(K8S)配合Docker部署jar包
通过Docker打包并部署到Kubernetes(K8S)集群的过程。首先,通过SpringBoot生成jar包,接着在K8S环境中创建并编辑Dockerfile文件。随后构建Docker镜像,并将其推送到镜像仓库。最后,通过一系列kubectl命令(如get pods、get svc、logs等),展示了如何在K8S中管理应用,包括查看Pod状态、服务信息、Pod日志以及重启Pod等操作。
96 2
|
1天前
|
应用服务中间件 Docker 容器
docker应用部署---Tomcat的部署配置
这篇文章介绍了如何使用Docker部署Tomcat服务器,包括搜索和拉取Tomcat镜像、创建容器并设置端口映射和目录映射,以及如何创建一个HTML页面并使用外部机器访问Tomcat服务器。
docker应用部署---Tomcat的部署配置
|
1天前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
25天前
|
Docker 容器
Docker自建仓库之Harbor高可用部署实战篇
关于如何部署Harbor高可用性的实战教程,涵盖了从单机部署到镜像仓库同步的详细步骤。
65 15
Docker自建仓库之Harbor高可用部署实战篇
|
15天前
|
人工智能 API 数据库
FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
【9月更文挑战第5天】 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
|
2天前
|
前端开发 应用服务中间件 nginx
docker部署本地前端项目思路
docker部署本地前端项目思路
16 7
|
1天前
|
应用服务中间件 nginx Docker
docker应用部署---nginx部署的配置
这篇文章介绍了如何使用Docker部署Nginx服务器,包括搜索和拉取Nginx镜像、创建容器并设置端口映射和目录映射,以及如何创建一个测试页面并使用外部机器访问Nginx服务器。
|
25天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
25天前
|
虚拟化 Docker Windows
window 10专业版部署docker环境
本文介绍了如何在Windows 10专业版上部署Docker环境,包括安装步骤、配置镜像加速以及可能遇到的错误处理。
52 2
window 10专业版部署docker环境