1.新建一个项目 比如vue init vue@latest完事之后运行打包到build目录下
2.在项目根目录下通过执行命令
touch Dockerfile
3.拉取nginx镜像
首先打开你的Docker,默认会启动。控制台拉取 Nginx 镜像:运行
docker pull nginx
4.在根目录创建Nginx配置文件
touch default.conf
写入:
server {
listen 80; // 配置监听端口 在启容器的时候端口号需要对应这个80(左边的)
server_name localhost; //配置域名
#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; //当没一个server里面没有其他的路径可以访问时 会默认访问该配置目录下的文件
index index.html index.htm; // 首页定义默认访问的是哪个文件 如果index.html没有找到就会去找index.htm
}
error_page 500 502 503 504 404 /50x.html; // 报错页面
location = /50x.html {
root /usr/share/nginx/html;
}
}
5.配置镜像
打开Dockerfile文件,写入:
FROM nginx
COPY dist/ /usr/share/nginx/html/
COPY default.conf /etc/nginx/conf.d/default.conf
解释一些对应代码的大概意思:
-
FROM nginx 指定该镜像是基于 nginx:latest 镜像而构建的;
-
COPY dist/ /usr/share/nginx/html/ 命令的意思是将项目根目录下 dist 文件夹中的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下;
-
COPY default.conf /etc/nginx/conf.d/default.conf 将 default.conf 复制到 etc/nginx/conf.d/default.conf,用本地的 default.conf 配置来替换 Nginx 镜像里的默认配置。
6.构建镜像
docker build -t vue2.0-system .
出现上面的信息表示构建成功
-t 参数给镜像命名 vue2.0-system
. 是基于当前dockerfile目录来构建的镜像
运行docker image ls | grep docker-demo-vue查看镜像,可以看到我们构建镜像的大小
7.运行容器
docker run -d -p 3000:80 --name docker-vue vue2.0-system
命令说明:
-d 设置容器在后台运行
-p 表示端口映射,把本机的 3000 端口映射到 container 的 80 端口(这样外网就能通过本机的 3000 端口访问了。
–name 设置容器名 docker-vue
vue2.0-system 是我们上面构建的镜像名字
可以运行docker ps -a 查看容器id:
8.访问项目
我们打开http://localhost:3000/,就可以在浏览器中看到对应的页面,跟我们前面创建项目的时候看到的界面是一样的
也可以使用curl -v -i localhost:3000 去查看对应的静态文件
docker的发布流程
// 1.查看目前已经在运行的容器有哪些
docker ps
docker ps -a 查看全部的容器
// 2. 停掉某一个容器
docker stop 容器ID
// 3.删除容器
docker rm 容器ID
// 4. 查看已经运行的镜像
docker images
docker images -a // 查看全部镜像
// 5. 删除镜像
docker rmi 镜像id
// 6. 在创建镜像 注意后面的点 . -t 指定镜像名称 . 表示当前目录
docker build -t my-vue .
// 7.创建容器
docker run -d -it --add-host="jeecg-boot-system:127.0.0.1" -p 80:80 jeecg-boot-ui
// 8. 查看容器是否启用成功
docker ps / docker container ls
或者docker ps -a
或者 docker logs -f 容器ID 查看是否运行
// 9.docker stats 查看容器资源占用
docker stats 容器名
// 查看容器是否运行成功
wget 172.17.0.2:80
// 10.检验发布的网址是否能够走通
telnet 47.109.73.xxx
作为一名前端工程,掌握基本的前端打包发布流程很有必要
这里解释一下 创建容器的这个指令的意思
docker run -d -it --add-host=“jeecg-boot-system:127.0.0.1” -p 80:80 jeecg-boot-ui
- -d: 后台运行容器,并返回容器ID;
- -it:可交互式、赋予 tty 的方式
- -p:host-port:container-port:宿主机与容器端口映射,方便容器对外提供服务, 一般发布都是以80为主,因为80可以省略,如果是其他端口,在访问浏览器的时候就需要带上端口号了
- –add-host 就是配置host,部署在docker环境的项目,需要通过域名访问外部一些资源,但因为没有配置dns解析,因此需要通过配置hosts来进行访问,所以需要配置host
启动 nginx 容器,并在本地 8888 端口进行访问 命令:
docker run --rm -it --name nginx -p 8888:80 nginx:alpine
–rm:当停止容器时自动清除容器
// 查看服务器的端口
netstat -lnt
// 删除容器
docker rm -f id
// 启动容器 -p 后面指定宿主机的端口:容器端口,可以同时指定多个 --name 定义名称 -d 后台运行
docker run -d --name mydocker -p 8080:80 -p 10000:80 nginx
// 查看服务器ip
hostname -I
// 访问
curl 192.168.1.1
// 容器的重启
docker start id
// 数据持久化存储 -v 会把 宿主机目录data/nginx的文件存储在容器的/opt/nginx/html目录里面 防止数据丢失
docker run -d --name nginx-test -p 8080:80 -v /data/nginx:/opt/nginx/html
docker-compose.yaml 相关配置
version: '2'
services:
jeecg-boot-ui:
build:
context: . #设定上下文根目录,然后以该目录为准指定 Dockerfile
restart: always
container_name: jeecg-boot-ui # 指定容器的名称
image: jeecg-boot-ui # 定义的镜像名称
external_links:
- jeecg-boot-gateway
ports: # 映射端口
- 80:80
- 10000:80
# 名录的挂在
volumes:
- /opt/nginx:/opt/gninx/html
networks: # 网路挂在 到jeecg-boot_default 这个就是下面的 networks定义的
- jeecg-boot_default
# 加入到后端网络, 默认为 askpcb_default | docker network ls 查看
networks:
jeecg-boot_default: # 网络名称
external: true # 网络由外部创建