前面一篇文章,我们展示了docker如何挂载数据:

这篇文章简单介绍一下docker如何部署一个前端网站。

首先,我们把前台代码进行打包,变成一个文件夹。本文以vue项目为例,随便创建了一个vue项目,然后进行打包。打包完的文件夹名称是dist。

1.修改nginx.conf

我们主要的任务是修改nginx的配置文件,然后进行挂载。


worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
   
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  my-test;

        location / {
            # root   html/dist;  #本地测试位置
            root  /usr/share/nginx/html;    #nginx容器规定位置
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}

这里需要说明的是后台代理这个地方可以不用写,我们只是测试前台部署。

后台代理这里表示 所有请求中以 /api开头的全部转发到 http://test:8081这个端口去,这里的test就是上一篇文章中我们部署的jar包的那个容器名,8081就是那个容器的端口号。

2.挂载数据

我们在服务器的root目录下创建一个文件夹,叫nginx。我们把打包好的前台文件和nginx的配置文件一同复制到这个文件夹下面。

然后执行下面指令:

docker run -d --name nginx-test -p 80:80 -v /root/nginx/dist:/usr/share/nginx/html -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf  nginx

然后访问地址,然后就可以看到我们使用docker创建的前端内容了。

3.使用dockerfile编写

上面我们使用指令进行的编写,我们也可以自己编写dockerfile,然后使用dockerfile来创建,效果一样,但是实际开发中多使用dockerfile。

我首先删除掉刚才的容器,然后编写dockerfile文件

#指定基础镜像
FROM nginx
#将前端文件复制到nginx容器规定目录下
COPY dist   /usr/share/nginx/html
#将nginx配置文件复制到nginx规定目录下
COPY nginx.conf /etc/nginx/nginx.conf

我们将前台静态文件、nginx配置文件、Dockerfile文件放在同一个文件夹底下,然后cd到这个文件夹底下

然后执行下面指令,生成一个新镜像,镜像名字就是vue-app。注意指令末尾的点

docker build -t vue-app .

然后我们再启动容器

 docker run -d --name vue-test -p 80:80 vue-app

这样就可以了。