ubuntu+Docker部署Django+Vue项目(1-Vue)

文章目录

    • ubuntu安装下载Docker
        • 1.卸载(清除旧版本。没下载过也可以执行下试试)
        • 2.更新apt包索引并安装包,以允许apt通过HTTPS使用存储库
        • 3.添加Docker的官方GPG密钥
        • 4.使用以下命令设置存储库
        • 5.更新apt包索引
        • 6.安装最新版本的Docker Engine、containerd和Docker Compose。
        • 7.通过运行hello world映像验证Docker Engine安装是否成功
    • ubuntu安装下载Nginx
        • default.conf内容
        • Dockerfile内容
        • 启动容器
        • 访问成功
        • 查看容器日志
    • 部署过程中的一些Docker命令
      • 用到的容器命令
        • Docker ps 命令
          • OPTIONS说明:
      • 用到的镜像命令
        • Docker images 命令
          • OPTIONS说明:

之前直接在ubuntu上部署过这个项目,但是因为Docker部署的一些好处: 持续集成、版本控制、可移植性、隔离性和安全性
我这主要是为了在docker容器中部署之后,打包容器,拖到云端直接运行(可移植性)。又要在Docker上部署一遍了。在这个部署过程中给出一些用到的docker命令(感觉有点像linux命令)

ubuntu安装下载Docker

官网安装链接
搜过一些复杂详细的教程,但是没有安装过Docker,直接按照官网很快顺利的安装完成了。
以下按照官网的步骤解释一下

1.卸载(清除旧版本。没下载过也可以执行下试试)
sudo apt-get remove docker docker-engine docker.io containerd runc

卸载docker时,存储在/var/lib/docker/中的图像、容器、卷和网络不会自动删除

2.更新apt包索引并安装包,以允许apt通过HTTPS使用存储库
sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
3.添加Docker的官方GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
4.使用以下命令设置存储库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5.更新apt包索引
sudo apt-get update
6.安装最新版本的Docker Engine、containerd和Docker Compose。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
7.通过运行hello world映像验证Docker Engine安装是否成功
sudo docker run hello-world

ubuntu安装下载Nginx

  1. 默认拉取最近的nginx镜像
docker pull nginx
  1. 查看已安装镜像镜像
docker images
  1. 新建一个项目文件夹放Web项目。在/home/andy/新建Web目录(放多个Web项目),再新建nginx目录,其中distvue-cli编译项目生成的文件夹直接拖入的。
    ubuntu+Docker部署Django+Vue项目(1-Vue)_第1张图片
  2. 以下给出另外两个文件nginx 和docker的配置
default.conf内容

其实就是之前没用Docker部署的nginx中nginx.conf中的内容(根据自己的文件修改)

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

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

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;
	#	Vue configuration
	server {
	listen   8080;     #配置访问时的端口号
	server_name  192.168.80.128;
	charset     utf-8;
	client_max_body_size  75M;  #影响post文件的最大大小

	location / {          #配置web静态资源
		root /home/andy/Documents/photovoltaic/photovoltaichtml;
		index index.html;
		add_header 'Access-Control-Allow-Origin' '*';
		}
	}

#	uWSGi configuration
	server {
	listen   9001;     #配置访问时的端口号
	server_name  192.168.80.128;
	charset     utf-8;
	client_max_body_size  75M;  #影响post文件的最大大小
	
	location /upload {        #配置媒体资源文件
		expires 30d;
		autoindex  on;
		add_header Cache-Control private;
		alias /home/andy/Documents/photovoltaic/photovoltaicsite/upload;
		}
	location /static {      #配置静态资源文件
		expires 30d;
		autoindex on;
		add_header Cache-Control private;
		#alias /home/andy/Documents/photovoltaic/photovoltaiccalculation;
		alias /home/andy/Documents/photovoltaic/photovoltaicsite/static;
	}
	location / {          #配置uWSGI服务器
		include /etc/nginx/uwsgi_params;
		uwsgi_pass 192.168.80.128:9090;
		uwsgi_read_timeout 2;

	}
	}
	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}


#mail {
#	# See sample authentication script at:
#	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#	# auth_http localhost/auth.php;
#	# pop3_capabilities "TOP" "USER";
#	# imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#	server {
#		listen     localhost:110;
#		protocol   pop3;
#		proxy      on;
#	}
# 
#	server {
#		listen     localhost:143;
#		protocol   imap;
#		proxy      on;
#	}
#}

Dockerfile内容
# 设置基础镜像
FROM nginx
# 定义作者
MAINTAINER andy
# 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面
COPY dist/  /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/nginx.conf

自定义构建镜像的时候基于 Dockerfile 来构建。
FROM nginx 命令的意思该镜像是基于 nginx:latest镜像而构建的。
MAINTAINER andy镜像维护者姓名或邮箱地址。
COPY dist/ /usr/share/nginx/html/ 命令的意思是将项目根目录下dist文件夹下的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下。

  1. 创建镜像(不要漏掉最后的一个点):
    进入nginx目录下执行命令:
    sudo是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具
sudo docker build -t pvcal .

-i: 交互式操作。
-t: 终端。

执行成功

root@ubuntu:/home/andy/Web/nginx# sudo docker build -t pvcal .
Sending build context to Docker daemon  3.215MB
Step 1/5 : FROM nginx
 ---> 88736fe82739
Step 2/5 : MAINTAINER andy
 ---> Running in 97341a1ac29e
Removing intermediate container 97341a1ac29e
 ---> 0ccbdef5db5b
Step 3/5 : RUN rm /etc/nginx/conf.d/default.conf
 ---> Running in 5791b2eea9e3
Removing intermediate container 5791b2eea9e3
 ---> f550ba3ce560
Step 4/5 : ADD default.conf /etc/nginx/conf.d/
 ---> d161248c35d1
Step 5/5 : COPY dist/ /usr/share/nginx/html/
 ---> 6ba8ca4542fa
Successfully built 6ba8ca4542fa
Successfully tagged pvcal:latest
启动容器

sudo docker run -d -p 【主机端口】:【容器端口】 --name 【容器名】【镜像名/ID】

-p : 端口映射 格式为[主机端口:容器端口]
-d : 后台模式运行
-name : 给容器起一个名字

sudo docker run -d -p 8080:80 --name pvcalVue 6ba8ca4542fa
访问成功

ubuntu+Docker部署Django+Vue项目(1-Vue)_第2张图片

查看容器日志
docker logs 155363e0f9b9(容器ID)

ubuntu+Docker部署Django+Vue项目(1-Vue)_第3张图片

部署过程中的一些Docker命令

用到的容器命令

  1. 列出正在运行的容器
docker ps 
  1. 显示所有的容器,包括未运行的
docker ps -a

在这里插入图片描述

  1. 删除全部容器
    如果容器已经全部停止的话可以这样使用
docker rm $(docker ps -aq)
  1. 停止并删除全部容器
    如果不想挨个去停用容器,可以使用这条命令
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
Docker ps 命令
docker ps [OPTIONS]
OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。     

所以docker ps -qa就是列出所有容器的编号

停止一个正在运行的容器:

docker stop 8959823ce1b7   //docker stop 容器ID或容器名

删除容器(配合停止容器删除)

docker rm 8959823ce1b7   

重启容器

docker restart 8959823ce1b7  //docker restart 容器ID或容器名:不管容器是否启动,直接重启容器

用到的镜像命令

  1. 列出镜像
docker images
  1. 删除所有镜像
    删除镜像之前你要保证镜像没有被使用,否则删除不了,所以需要删除全部容器的时候,你需要先执行上边的命令,然后再执行下边这条命令
docker rmi -f $(docker images -qa)
Docker images 命令
docker images [OPTIONS]
OPTIONS说明:
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
--digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
--format :指定返回值的模板文件;
--no-trunc :显示完整的镜像信息;
-q :只显示镜像ID 

所以docker images -qa就是列出所有镜像的编号

制作DockerFile教程链接

docker启动命令,docker重启命令,docker关闭命令
启动 systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart docker
重启docker服务 sudo service docker restart
关闭docker service docker stop
关闭docker systemctl stop docker

你可能感兴趣的:(Linux,Docker,web笔记,docker,ubuntu,vue,nginx,容器)