5).镜像创建好之后,先测试一下能不能用,docker run -d --name mac-redis mac-redis。这时候mac-redis的容器已经在后台跑起来了,我们再用redis-cli测试这个redis服务,docker run -it --link mac-redis:redis --rm redis redis-cli -h redis -p 6379使用--rm参数,用完就清除这个容器。测试如下:
redis:6379> set key1 value1 OK redis:6379> get key1 "value1"
看来redis服务没问题,exit退出。再把测试用的redis服务容器也删除掉docker rm -f mac-redis。
4 使用docker跑aspnetcore程序
这个是最简单的了,根据微软的镜像来就行了,园子里也有大量的教程。
在这里我把它们放在集群中,只要在docker-compose.yml中配置各个aspnetcore程序的Dockerfile所在的路径即可,在我们的yml文件中有
build: ~/identity/src/Web/ #identity项目的Dockerfile所在的目录
identity的源代码所在的目录为~/identity/,Dockerfile在其中的src/web里面,如下:
FROM microsoft/aspnetcore:1.1.1 LABEL Name=identity Version=0.0.1 ENV ASPNETCORE_ENVIRONMENT Development ENTRYPOINT ["dotnet", "Identity.Web.dll"]
如果有多个Dockerfile,可以在yml中指定Dockerfile的名称。
另外一个ucenter的Dockerfile如下:
FROM microsoft/aspnetcore:1.1.1 LABEL Name=ucenter Version=0.0.1 ENTRYPOINT ["dotnet", "UCenter.WebAPI.dll"]
代码修改了之后,dotnet publis && docker restart xxx(xxx就是容器的名称)就生效了。
使用chrome浏览器访问
最后进入sites目录,docker-compose up启动集群,由于nginx监听的是主机的80端口,所以需要把绑定的url指向主机的80端口,一种方法是直接在hosts中加解析,但是不推荐这样做,因为如果要访问线上的项目的话,又要改hosts。为了不污染主机环境,推荐使用chrome浏览器,chrome有多用户功能,因此新建一个用户,使用SwitchyOmega插件,将所需要的URl代理到主机的80端口,这样以后开发的时候用这个chrome的这个用户就可以了,完全不影响主机环境。
在开发环节中,debug是必不可少的需求,所以下篇介绍如何用VSCode在Docker中debug。