当前位置: 首页 » 综合知识 » it知识 » 正文

怎么给Ocelot做一个Docker镜像

发布时间:2023-07-29 以下文章来源于网友投稿,内容仅供参考!

创建dockerfile代码

dockerfile只是一个文本文件,它每一行代表docker镜像的一个layer,每一行由命令加参数组成,我们通过编写简单的命令,就能使用docker工具生成docker镜像。
首先你要在项目中创建dockerfile,请记住,把你的dockerfile放在sln目录下,因为dockerfile文件的build环境是按照你这个文件的目录来的,切记,dockermand对文件名对大小写敏感。

直接上代码:

from microsoft/aspnetcore:2.0 as base #基于asp.net core 2.0镜像
workdir /app
expose 80

# 先使用asp.net core build镜像,然后复制项目到/src目录
from microsoft/aspnetcore-build:2.0 as build
workdir /src
copy *.sln ./
copy demos/apigateway.web/apigateway.web.csproj demos/apigateway.web/
copy src/ocelot/ocelot.csproj src/ocelot/

run dotnet restore

copy . .
workdir /src/demos/apigateway.web
run dotnet add package buildbundlerminifier
#这里添加了对bundle的支持,你可以不使用,因为我更改了样式,所以这里加上了这个。
run dotnet restore
run dotnet build -c release -o /app

# 编译以后,我们进行发布,并直接复制到app目录
from build as publish
run dotnet publish -c release -o /app

# 设定app目录为工作目录
from base as final
workdir /app
copy --from=publish /app .
# 挂载/app/configurations目录
volume /app/configurations

entrypoint ["dotnet", "apigateway.web.dll"]

上面就是我的dockerfile文件了,我在项目中并没有把configuration.json文件放到项目根目录,而是另外创建了一个configurations目录,这样我挂载目录,可以在多个容器中共享数据。

生成docker镜像

如果你的机器上装了docker,那可以通过命令工具,在项目的根目录运行:

docker build -t myocelot:v1 .

注意这个命令后的.一定不要忘记哦

如果你机器上没有安装docker,也没有关系,可以通过docker仓库或者阿里云的容器管理进行生成,他们都是免费的,博主使用的是阿里云容器管理创建的,这样每次代码改动,它会自动生成新的镜像。

运行容器

当我们有了镜像后,就可以运行容器了,因为博主用的是阿里云容器管理,所以我需要先把镜像pull到运行环境(我用的是阿里云ecs)

docker pull registry-hangzhou.aliyuncs/jamesying/ocelot-demo
docker tag registry-hangzhou.aliyuncs/jamesying/ocelot-demo myocelot:v1

博主通过pull命令拉了镜像后又通过tag命令重新命名了tagname。

随后我们创建一个ocelot的配置文件目录,并创建configurations.json文件:

mkdir /home/ocelot
touch /home/ocelot/configurations.json

下面通过vi工具配置你自己的config,下面是博主的:

{
 "reroutes": [
  {
   "downstreampathtemplate": "/api/values/{id}",
   "downstreamscheme": "http",
   "downstreamhostandports": [

    {
     "host": "localhost",
     "port": 6002
    },
    {
     "host": "localhost",
     "port": 6001
    }
   ],
   "loadbalancer": "roundrobin",
   "upstreampathtemplate": "/api/v1/values/{id}",
   "downstreamhealthcheckpath": "/hc?apikey=testapi",
   "upstreamhttpmethod": [ "get", "put", "delete" ]
  }
 ],
 "globalconfiguration": {}
}

后面我们来运行容器:

docker run --name myocelot -p 6008:80 -v /home/ocelot:/app/configurations -d ocelot:v1

成功运行以后,我们就可以通过6008端口访问了,你可以通过 ocelot.jcsoft.xyz:6008 看下demo。下图为演示截图:

  • • Linux Ecdsa密钥长度选择有何依据

    在Linux

  • • Linux Khook在内核监控中的应用如何

    Linux

  • • Linux Gsoap是否支持异步通信

    GSOAP是

  • • Linux Coremail如何提升用户体验

    提升Linu

  • • Linux Ecdsa算法有哪些局限性

    ECDSA

  • 哎呀音乐钢琴键盘学习《 钢琴主人训练营》 西瓜学琴
    郭蝈 陪练钢琴 30节课时 考级刚需 让孩子每一次练琴都是高质量的
    30天轻松学会五线谱 流行钢琴自学初级教程 牙牙学琴
    流行爵士钢琴实战技巧VIP课 - 继伟 哎呀音乐
    【海上钢琴师】原版 MT1990钢琴谱
    百首经典流行钢琴实战曲集 - 继伟
    雷费尔德电钢琴重锤88键专业考级儿童初学者数码电子钢琴家用
    小练咖 真人钢琴陪练 1v1服务 2999随时退 1课时50分钟 考级刚需
    雅马哈电钢琴88键重锤CLP735智能数码电子钢琴家用专业初学者考级
    【原装进口】Yamaha/雅马哈钢琴 b121 SC2原声静音钢琴
  • 珠海专业调钢琴
  • 天津宝坻区调钢琴
  • 天津静海区钢琴调音
  • 成都简阳市钢琴调律
  • 大连瓦房店市钢琴调音
  • 眉山调钢琴联系方式
  • 惠州大亚湾钢琴调琴师
  • 长治调琴师
  • 厦门湖里区钢琴调音师
  • 上海普陀区钢琴调音师