本地使用docker打包部署镜像的方法

第一次在本地使用docker打包、部署镜像

首先说下我的笔记本系统是MACOS 10.15.4
我安装的docker版本是v19.03.5

一、项目结构如下:

这是一个react项目,打包后的静态资源路径是dist目录。

二、重点看Dockerfile文件和docker/nginx.conf文件

1. Dockerfile是一个用来构建镜像的文本文件,详细介绍可以参考链接:Docker Dockerfile

我的Dockerfile内容如下:

FROM nginx
WORKDIR /usr/src/app/
COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf
COPY ./dist /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Dockerfile中的大写单词是命令,各个命令的含义解释:

  • FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。
  • RUN:用于执行后面跟着的命令行命令。有以下俩种格式:
  • WORKDIR:指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。WORKDIR 指定的工作目录,必须是提前创建好的。docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。
  • COPY:复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
  • EXPOSE:仅仅只是声明端口。作用:帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。
  • CMD:类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:CMD 在docker run 时运行。RUN 是在 docker build。作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。

2. docker/nginx.conf

server {
  listen 80;
  # gzip config
  gzip on;
  gzip_min_length 1k;
  gzip_comp_level 9;
  gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
  gzip_vary on;
  gzip_disable "MSIE [1-6]\.";
  client_max_body_size 100m;

  root /usr/share/nginx/html;

  location / {
    try_files $uri $uri/ /index.html;
  }
  location /api/ {
  	# 此处为后端地址
    proxy_pass http://www.XXX.com/;
  }
}

三、执行docker build命令制作镜像

我执行的命令是:docker build -t mydocker .
-t : 为镜像打一个tag,tag名称为mydocker
不要忘了后面有个点,表示在当前路径下制作镜像

四、执行docker run部署镜像

我执行的命令是:docker run -p 80:80 mydocker
-p 是指定映射到本机的端口
docker run -p 本机端口:镜像端口 镜像名

五、打开localhost:80就可以看到项目啦

初次体验docker本地部署,很多原理和docker命令还不太清楚,以后还会进一步学习~

补充一个小问题,我今天突然无法将镜像推到公司的私有云了,是网络环境有问题,就让同事帮忙推一下。
我先将打包好的镜像保存到本地:

docker save 10.10.10.52:5000/zhanwu-study/prod:4.1.2 > study.tar

然后将生成到当前目录下的study.tar通过钉钉发给同事,他下来study.tar到本地,然后执行:

docker load < study.tar

更新一下版本(没有生成新的镜像,两个版本是同一个镜像):

docker tag 10.10.10.52:5000/zhanwu-study/prod:4.1.2 10.10.10.52:5000/zhanwu-study/prod:4.1.3

然后推到私有云:

docker push 10.10.10.52:5000/zhanwu-study/prod:4.1.3

到此这篇关于本地使用docker打包部署镜像的方法的文章就介绍到这了,更多相关本地docker打包部署镜像内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解如何使用Docker部署一个web项目并打包成镜像文件

    docker基本入门以后,可以试试打包docker镜像与dockerfile了 docker镜像 docker hub仓库有2类仓库,用户仓库和顶层仓库,用户仓库由docker用户创建的,顶层仓库由docker内部的人来管理的.仓库里存放的是镜像文件,那么问题来了 ,怎么去创建镜像呢? how to create image 构建docker镜像的有2种方法: 1.使用docker commit命令. 2.使用docker build 命令和Dockerfile文件.在这里并不推荐使用docke

  • 本地使用docker打包部署镜像的方法

    第一次在本地使用docker打包.部署镜像 首先说下我的笔记本系统是MACOS 10.15.4 我安装的docker版本是v19.03.5 一.项目结构如下: 这是一个react项目,打包后的静态资源路径是dist目录. 二.重点看Dockerfile文件和docker/nginx.conf文件 1. Dockerfile是一个用来构建镜像的文本文件,详细介绍可以参考链接:Docker Dockerfile 我的Dockerfile内容如下: FROM nginx WORKDIR /usr/sr

  • Docker Compose部署Nginx的方法步骤

    使用Docker Compose部署Nginx,创建docker-compose.yaml: [root@192 ~]# vim docker-compose.yaml 输入以下内容: version: '3' services: nginx: container_name: nginx image: nginx restart: always ports: - 8080:80 privileged: true networks: - mynginx networks: mynginx: dri

  • Gogs+Jenkins+Docker 自动化部署.NetCore的方法步骤

    环境说明 腾讯云轻量服务器, 配置 1c 2g 6mb ,系统是 ubuntu 20.14,Docker 和 Jenkins 都在这台服务器上面, 群晖218+一台,Gogs 在这台服务器上. Docker安装 卸载旧的 Docker sudo apt-get remove docker docker-engine docker.io containerd runc 更新 apt 包索引并安装包以允许 apt 通过 HTTPS 使用存储库 sudo apt-get update sudo apt

  • 在docker中部署k8s的方法

    K8s k8s是一个cluster集群,在cluster集群中有多个Namespace,一个namespace下又有多个pods,一个pod下有多个container. 这篇文章带你从头在docker中部署k8s. docker下载 docker安装 docker: https://docs.docker.com/docker-for-mac/install/ 在docker中使用k8s: https://docs.docker.com/desktop/kubernetes/ 在docker设置

  • Docker上部署Nginx的方法步骤

    目录 1.从 docker 下载 Nginx 镜像 2.创建挂载目录 3.为了保证文件的正确性,建议先进入容器把对应的文件给复制出来 4.接下来修改下 default.conf 文件就好了 5.接下来就可以启动容器了 6.不停止 nginx 更新配置文件 1.从 docker 下载 Nginx 镜像 docker pull nginx 2.创建挂载目录 之后的文件就放这里面,对 docker 里 Nginx 对应的目录进行映射,就不用改文件进到容器里了 mkdir -p /data/nginx/

  • docker创建redis镜像的方法

    本文介绍了docker创建redis镜像的方法,分享给大家,具体如下: 直接pull redis 镜像 创建redis的镜像有几种方式,可以直接从仓库中拉取. 首先说说docker的生命周期 1.docker的创建方式,有两种方式: 1)可以直接run ,跳过上面的步骤.举个栗子: 在构建镜像,要提供访问的端口,-p为端口映射的 1.创建并启动,设置端口映射 docker run -p 127.0.0.1:6379:6379 redis docker run 备注:docker run命令:重新

  • Docker Dockerfile 定制镜像的方法

    使用 Dockerfile 定制镜像 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么无法重复的问题.镜像构建透明性的问题.体积的问题就都会解决.这个脚本就是 Dockerfile. Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. 此处以定制 nginx 镜像为例,使用 Dockerfile

  • 使用Docker快速部署Gitlab的方法

    1. 下载gitlab镜像 docker pull gitlab/gitlab-ce 2. 运行gitlab实例 GITLAB_HOME=`pwd`/data/gitlab docker run -d \ --hostname gitlab \ --publish 8443:443 --publish 80:80 --publish 2222:22 \ --name gitlab \ --restart always \ --volume $GITLAB_HOME/config:/etc/git

  • 一文教会你用Docker打包Python运行环境

    目录 前言 1. Docker基础 1.1 Docker架构 1.2 Docker对象 2. 启动Docker进程并运行镜像 2.1 启动Docker守护进程 2.2 运行镜像 3. 用Docker打包Python环境 参考 总结 前言 虽然Docker作为部署环境打包镜像的工具,和我的科研并没有直接的关系.但我觉得在项目中运用Docker来打包环境依赖也可以大大提高工作效率,于是准备专门学习一下Docker. 1. Docker基础 1.1 Docker架构 Docker使用客户端服务器架构.

  • kali安装docker和portainer的配置方法

    随着docker的出现,很多服务已经慢慢脱离了对硬件架构的依赖,很多arm结构的硬件也能运行x86的服务,docker启动速度和部署的快速性也受到广大极客的青睐,之前我是在自己买的树莓派4B安装了一个kali,我们都知道树莓派是arm架构CPU.我准备在上面部署一个nextcloud所以就想到了docker. 好了,不废话上命令: 1.安装docker和启动docker sudo apt-get install docker sudo systemctl start docker 2.docke

随机推荐