7-深入练习Dockerfile

7-深入练习Dockerfile

创建一个json-server 镜像

首先创建一个 json-server 文件夹

mkdir json-server
  1. json-server文件夹下创建Dockerfile

    FROM node:10.15.0
    RUN npm install -g json-server
    
  2. 构建镜像

    docker build -t json-server .
    

创建一个api服务的镜像

首先创建一个 api 文件夹

mkdir api
  1. api文件夹内创建一个users.json文件

    {"users": [{"id": 1,"username": "vincent","password": "123456","role": "admin"},{"id": 2,"username": "bob","password": "456789","role": "admin"},{"id": 3,"username": "lynn","password": "000000","role": "regular"}]
    }
    
  2. api文件夹内创建Dockerfile

    FROM json-server:latest
    COPY users.json /
    WORKDIR /
    EXPOSE 4200
    CMD ["json-server", "--port=4200", "--watch", "--host=0.0.0.0", "users.json"]
    
  3. 构建镜像

    docker build -t api .
    

创建容器运行

  1. 创建容器

    docker run -d -p 4200:4200 --name api api:latest
    

    -d 为后台运行

  2. 虚拟机内测试

    查看虚拟机ip地址

    ip addr
    

    通过curl测试GET,返回结果则正常

    curl http://192.168.2.139:4200/users
    
  3. 宿主机器测试

    此时需要修改Vagrantfile文件

    config.vm.network "public_network"  # 这一行反注释
    

    然后重启,并且进入虚拟机查看ip地址,然后在宿主机浏览器访问api
    在这里插入图片描述

    也可以通过curl测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8-容器操作

8-容器操作 普通操作 进入容器 docker exec -it api /bin/bash容器停止与启动 docker stop api docker start api容器重启 docker restart api查看容器详细信息 docker inspect api查看日志 docker logs api容器删除 docker stop api # 必须先停止才能删除 docker rm…

9-资源限制

9-资源限制 了解stress工具 stress是一个压力测试工具 docker run -it ubuntu:16.04此时会进入ubuntu内,这时我们安装 stress工具 apt-get update && apt-get install -y stress查看help stress --helpUsage: stress [OPTION [ARG]] ...-?, --help …

10-Docker 网络

10-Docker 网络 基础网络概念 数据传输通过数据包 两台笔记本之间通信是通过数据包通信的。想知道数据包是怎么打包的呢,就先要知道网络分层的概念。 网络分层 目前有两种网络分层的模型。 ISO/OSI 分层,也就是 7 层模型。TCP/IP 分层,也就…

11-Docker Bridge详解

11-Docker Bridge详解 容器之间是如何通信的? 操作前删除test2的容器。 查看当前机器上docker的网络 docker network lsNETWORK ID NAME DRIVER SCOPE 056d0ece100f bridge bridge local a…

12-容器之间link

12-容器之间link 这篇主要讲 容器之间如何 link。 需要准备的是,创建两个容器 test1 和 test2 通过 busybox。 在之前的课程中已经创建的只需要重新启动即可。 什么情况下需要link 例如有一个容器是 web 服务器,并且跑在一个docker容器内,…

13-容器的端口映射

13-容器的端口映射 部署一个简单web nginx容器 docker run -d --name web nginxnginx 默认的端口是 80 端口,此时我们是没有办法访问的。 好的,通过前面的学习我们已经知道,这个 web 容器四连接到 bridge 网桥上的,那我们查看一…

14-容器网络之host和none

14-容器网络之host和none 在之前的小节,我们有看到过 host 和 none。 通过 docker network ls 查看。 none 网络 删除 test1 容器 docker stop test1 && docker rm test1创建 test1 容器并连接到none网络 docker run -d --name test1 --network none busy…

15-多容器复杂应用的部署

15-多容器复杂应用的部署 此节主要是通过部署一个复杂的应用场景,进而练习容器的网络相关知识。 创建一个flask-web应用 创建一个 flask-web 文件夹 mkdir flask-web在此文件夹内创建 app.py 文件 cd flask-web touch app.py编写一个简单的 web 程序 import os im…

16-多机器通信

16-多机器通信 回顾上节课的思考题。 flask-redis 想访问 redis,该如何通信? 创建另外一台linux虚拟机 直接拷贝Vagrantfile文件创建一个 centos 虚拟机 我们创建一个centos7-2文件夹,然后创建虚拟机 vagrant up创建的过程中提示选择网络接…

17-Docker的数据持久化介绍

17-Docker的数据持久化介绍 回顾容器与镜像 容器是在镜像之上创建的一层运行时层,这一层是可以读写的,我们能够在容器内添加数据,读取数据。 也就是说我们在创建容器的时候,我们能够在容器内创建文件,安装软件等等&a…

18-数据持久化-Data Volume

18-数据持久化-Data Volume Data Volume 使用场景。一般来讲有些容器自己会产生一些数据,我们不想数据随着容器的销毁而销毁,我们想保存数据,正常一般用在数据库,比如我们想保存数据库中的数据,这个时候我们就会使用 …

19-数据持久化-Bind Mounting

19-数据持久化-Bind Mounting Bind Mounting 与 Data Volume区别 Data Volume 需要在 Dockerfile 内声明需要创建的 volume 目录。 Bind Mounting 则不需要在 Dockerfile 声明 volume,只需要在创建容器的时候,也就是 run 的时候声明即可。 如: dock…

go自定义包教程

go自定义包教程 而是环境为 go version go1.11 linux/amd64linux mint 19 创建一个自定义的包 切换到src目录下,创建demo目录 cd src mkdir demo再创建smap 文件夹 cd demo mkdir smap创建包文件 cd smap touch map.gomap.go文件内容 package smapimport "…

在Linux中对硬盘进行分区、格式化和挂载

在Linux中对硬盘进行分区、格式化和挂载 我最近有一个全新的4-TB硬盘加入我的电脑。所以我需要在Linux中安装它。为此,我需要执行以下操作: 分区格式化挂载检查是否已安装硬盘驱动器 分区 首先,在通过SATA和电源线将硬盘连接到计算机后&am…

Angular gitlab持续集成之runner配置

gitlab持续集成 安装Runner 正常安装 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64sudo chmod x /usr/local/bin/gitlab-runner sudo useradd --comment GitLab Runner --creat…

javascript编译压缩

javascript编译 js是JavaScript 源码文件, .min.js是压缩版的js文件。 .min.js文件经过压缩,相对编译前的js文件体积较小,传输效率快。经过编码将变量和函数原命名改为毫无意义的命名,以防止他人窥视和窃取 js 源代码 在线版 g…

vscode设置中文

vscode设置中文 当我们安装完成vscode后,会发现它是中文的,因为默认情况下,vscode使用的语言为英文(us)。 那很多同学是不喜欢英文的,不是看不懂,而是不方便哈。 修改语言配置文件 使用快捷键组合【CtrlShiftp】 在…

linux下编译boost

linux下编译boost 下载boot库 官方下载地址 下载完成会解压。 编译 1.进入解压后的文件夹内 cd boost_1_69_0 执行下面的语句 ./bootstrap.sh --with-librariesall --with-toolsetgcc–with-libraries 指定编译哪些boost库,all的话就是全部编译,只想…

C++通过原子变量代替互斥量

C通过原子变量代替互斥量 废话不多说&#xff0c;直接上代码。 实现类似lock_guard功能 #include <atomic> #include <thread>class ClockGuard { public:ClockGuard(std::atomic_flag & atomic):m_lockedFlag(atomic){lock();}~ClockGuard(){unlock();}voi…

conky安装配置

conky安装配置 安装conky sudo apt-get install conky-all修改配置 在主目录下创建’.conkyrc’ 文件内容&#xff1a; # set to yes if you want Conky to be forked in the background background no cpu_avg_samples 2 net_avg_samples 2 out_to_console no # X font w…