Docker
是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,该容器包含了应用程序的代码、运行环境、依赖库、配置文件等必需的资源,通过容器就可以实现方便快速并且与平台解耦的自动化部署方式,无论你部署时的环境如何,容器中的应用程序都会运行在同一种环境下。Docker 作为轻量级虚拟化技术,拥有持续集成、版本控制、可移植性、隔离性和安全性等优势。
Nginx
是一个高性能的 HTTP 和反向代理服务器,选用 Nginx 镜像作为基础来构建vue应用镜像。
安装Docker
yum install docker
启动服务 start docker
systemctl start docker
Docker中拉取nginx
镜像
docker pull nginx
创建配置文件
配置Dockerfile
- 自定义构建镜像的时候基于
Dockerfile
来构建。FROM nginx:latest
: 命令的意思该镜像是基于 nginx:latest 镜像而构建的。COPY dist/ /usr/share/nginx/html/
:命令的意思是将项目根目录下 dist 文件夹下的所有文件复制到镜像中/usr/share/nginx/html/
目录下。COPY default.conf /etc/nginx/conf.d/default.conf
命令的意思是将 Nginx 目录下的 default.conf 复制到 etc/nginx/conf.d/default.conf,用本地的 default.conf 配置来替换 Nginx 镜像里的默认配置。
FROM nginx:latest
MAINTAINER xiyangbai@outlook.com # 维护者信息
# 将项目根目录下dist文件夹下的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下
COPY dist/ /usr/share/nginx/html/
COPY default.conf /etc/nginx/conf.d/default.conf
配置default.conf
upstream my_server{
server 121.41.4.33:3000; # 后端server 地址
keepalive 2000;
}
server {
listen 80;
server_name www.xxx.com; # 修改为docker服务宿主机的ip/域名,比如我之前说的11.22.33.44
#charset koi8-r;
access_log /var/log/nginx/host.access.log main;
error_log /var/log/nginx/error.log error;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
# 这里就是和vue本地代理的意思一样,已api开头的路径都代理到本机的3000端口
location /api/ {
proxy_pass http://my_server/api;
proxy_set_header Host $host:$server_port;
rewrite ^/api/(.*) /$1 break;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
将打包项目,把dist
文件夹和刚刚创建的Dockerfile
,default.conf
放到同一目录
构建镜像 build images
docker build -t admin .
查看镜像images
docker images
启动容器
docker run -d -p 8136:80 --name dooringx-admin admin
- -d 后台方式运行
- -p 8136:80 端口映射,将宿主的8136端口映射到容器的80端口
- –name 容器名 镜像名
查看运行的容器 container
docker ps
查看容器日志logs
# 当容器状态异常时查看日志
docker logs
移除镜像rm images
- 停止运行容器并移除容器
stop && rm
// 停止运行容器 docker stop<容器ID或容器名>
docker stop dooringX-Admin
// 移除容器 docker rm <容器ID或容器名>\
docker rm dooringX-Admin
// 查看当前容器
docker container ls -a
- 移除镜像
image rm
docker image rm doorxing-admin
最后打开浏览器输入你的服务器ip/域名 端口号:8136,呐,启动啦
后续根据需要可以结合
github webhooks
以及Jenkins
实现Docker
自动化部署