资讯专栏INFORMATION COLUMN

docker构建镜像

社区管理员 / 643人阅读

一、前言

保持线上项目稳定运行是很重要的,为了达到服务可用性在99.9%,也为了减少开发人员在项目部署时耗费大量精力,可以尝试自动化发布

自动化部署涉及到的配置比较多,每个环节需要掌握的知识也不同,所以分开写

该过程中用到的技术栈webpack docker nginx shell

二、实践环境

  • mac

  • node > 10.11.1

  • docker > 20.0.0

三、提前准备的内容

  • 通过create-react-app构建的一个前端项,这里起名项目myweb

  • 本地安装docker

四、构建docker镜像

首先通过镜像打包前端部署包,在项目根目录下,新建Dockerfile文件

1、Dockerfile

FROM node:10-alpine as builder WORKDIR /data/myweb COPY . . RUN npm install --registry=https://registry.npm.taobao.org --no-package-lock --no-save RUN yarn build FROM nginx:alpine as myweb RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \     && echo "Asia/Shanghai" > /etc/timezone  WORKDIR /data/myweb COPY ./nginx /etc/nginx/conf.d COPY  --from=builder /data/myweb/build /data/myweb EXPOSE 80,443 复制代码

2、配置文件说明:

该Dockerfile干了两件事,

第一是将前端项目打包到node镜像中,这里起名builder

第二是拉取nginx镜像,将文件的nginx配置镜像覆盖,将builder镜像中打包的文件复制到nginx镜像的/data/myweb文件中,执行docker build -t myweb .

此时我们执行打包命令,得到的两个镜像,一个打包后的node镜像,一个nginx镜像,我们只需要nginx镜像来拉起服务

3、执行命令

// 1、docker通过Dockerfile构建镜像 `docker build -t dockerName:1.0.0 .` // 2、查看当前存在镜像 docker images // 3、删除docker镜像 docker rmi dockerImageId // 4、删除docker容器 docker rm dockerContainerId // 5、启动一个docker容器 docker run -d -p 8000:80 --name frontend [dockerImageName] // 6、查看运行中的容器 docker ps 复制代码

4、运行中的服务

我们可以看到当前运行中的容器

image.png

在浏览器访问http://localhost:8000即可看到当前通过docker部署的服务

五、nginx配置文件

和我们正常部署是一样的,用来转发静态资源 在根目录下新建nginx文件夹,/nginx/default.conf

server {     listen 80;     server_name localhost;     location / {         root /data/myweb;         index index.html;     }     error_page 500 502 503 504 /50x.html;     location = /50x.html {         root /usr/share/nginx/html;     } } 复制代码

这样我们完成了第一步,通过docker部署我们的服务。

如果我们直接通过docker部署前端也是可以的。

接着,有了docker部署的基础,

接着继续通过k8s集群的部署


作者:前端中后台
链接:https://juejin.cn/post/6962037427108380709
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127951.html

相关文章

  • docker命令

    摘要:,自动构建,表示这个镜像由的自动构建流程构建的。保存的目录称为上下文,会在构建镜像时将构建的上下文和该上下文的文件和目录上传到守护进程。可用略过缓存查看镜像的每一层参考第一本书 docker入门 主要是docker使用命令 docker守护进程 修改守护进程的网络 sudo docker daemon -H tcp://0.0.0.0:2375 这条命令将docker守护进程 //...

    Tonny 评论0 收藏0
  • [Docker 官方文档] 理解 Docker

    摘要:将一个轻量级的容器虚拟化平台和一组标准工作流程工具进行集成,来帮助你方便地管理和部署应用。主要包括哪些组件主要包括两个组件开源的容器虚拟化平台用于分享和管理容器的软件即服务平台。 【编者的话】本文来自 Docker 的官方文档,详细介绍了 Docker 的体系结构、重要概念、内部工作机理等内容,推荐不了解 Docker 内部原理的同学阅读。 什么是 Docker? Docker 是...

    cncoder 评论0 收藏0
  • 都9102年了,还不会Docker?10分钟带你从入门操作到实战上手

    摘要:联调测试,无需依赖他人。针对以上问题,有两种解决方法,一个是自己搭建私有服务,另一个是用云服务的镜像管理平台如阿里云的容器镜像服务。利用,先对阿里云的服务进行登录。推送后,就能在阿里云的仓库上看到这个镜像。 Docker简述 Docker是一种OS虚拟化技术,是一个开源的应用容器引擎。它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中(Windo...

    sf_wangchong 评论0 收藏0
  • Docker技术之构建镜像和网络模式解析

    Docker技术之构建镜像和网络模式解析 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    不知名网友 评论0 收藏3004
  • 30 分钟快速入门 Docker 教程

    摘要:分钟快速入门教程一欢迎来到世界与虚拟化在没有的时代,我们会使用硬件虚拟化虚拟机以提供隔离。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库,国内的公开仓库也有很多选择,例如阿里云等。 30 分钟快速入门 Docker 教程 一、欢迎来到 Docker 世界 1. Docker 与虚拟化 在没有 Docker 的时代,我们会使用硬件虚拟化(虚拟机)以提供隔离。这里,虚拟机通过在操作系...

    LucasTwilight 评论0 收藏0

发表评论

0条评论

社区管理员

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<