# 挂载/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。下图为演示截图:

写在最后
为什么会有这个镜像呢,因为通过镜像生成很简单,而且配置文件更改后,只需要docker restart myocelot就能重新加载,非常简便。今天的内容很简单,但很实用,当然这个镜像还是有点欠缺的,因为Ocelot有很多功能,还需要在Startup.cs中注册一些service才可以使用,博主有个想法,弄个专门的Ocelot Demo,只需要通过config文件就能自动注册相应服务。










