这篇文章主要介绍“怎么给Ocelot做一个Docker镜像”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么给Ocelot做一个Docker镜像”文章能帮助大家解决问题。
创建dockerfile代码
dockerfile只是一个文本文件,它每一行代表docker镜像的一个layer,每一行由命令加参数组成,我们通过编写简单的命令,就能使用docker工具生成docker镜像。
首先你要在项目中创建dockerfile,请记住,把你的dockerfile放在sln目录下,因为dockerfile文件的build环境是按照你这个文件的目录来的,切记,docker command对文件名对大小写敏感。
直接上代码:
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.cn-hangzhou.aliyuncs.com/jamesying/ocelot-demo docker tag registry.cn-hangzhou.aliyuncs.com/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端口访问了,你可以通过 http://ocelot.jcsoft.xyz:6008 看下demo。下图为演示截图:
关于“怎么给Ocelot做一个Docker镜像”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4592993/blog/4419935