docker-compose 是个好东西,越用越香
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 WORKDIR /app COPY publish . EXPOSE 80 ENTRYPOINT ["dotnet","EqidManager.dll"]View Code
上面的Dockerfile 显示将publish 文件件下的部署文件拷贝进docker镜像, 配置容器在80端口监听请求
② 在nginx文件夹下创建Dockerfile 文件,将会使用基础nginx镜像和自定义的nginx.conf文件
FROM nginx COPY nginx.conf /etc/nginx/nginx.confView Code
nginx.conf 文件与前文类似:
worker_processes 4; events { worker_connections 1024; } http { sendfile on; upstream app_servers { server app:80; } server { listen 80; location / { proxy_pass http://app_servers; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; } } }
该nginx.conf与前文的区别是第9 行,前文因为app和nginx在一个容器,所以【upstream app_servers】配置为 server localhost:5000, 这里我们更改为server app:80, 其中app是在docker-compose.yml 文件中指定的服务名称。
4. 构建容器集合 --> 运行集合
在CentOS上安装了docker-compose工具之后, docker-compose --help 会看到可以利用的工具指令:
// build 命令会构建/重建每一个服务, 然后使用项目名称和服务名称标记每个镜像、容器
docker-compose build
// up 命令创建并运行容器
docker-compose up
如下图示: docker-compose 默认会利用项目名称EqidManager , 应用程序服务名称app 构建 ImageName=“EqidManager_app”镜像和对应名称容器。
[root@search-referer1 nginx]# docker inspect 0b576abb7ead [ { "Name": "eqidmanager_default", "Id": "0b576abb7ead9041a4aa0fe786c3e448f0ca93abe2559560e75f491bea326754", "Created": "2019-04-30T00:53:31.047534813+08:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [ { "Subnet": "172.18.0.0/16", "Gateway": "172.18.0.1" } ] }, "Internal": false, "Attachable": true, "Ingress": false, "Containers": { "f0b08e0e54e7e9293211bba0eb92f55749c3de4b31dc8011c3f803c02a69000a": { "Name": "eqidmanager_proxy_1", "EndpointID": "1311f2b21b2a0ecec205e6a8902d298eece8a782f7f7ab785ded6561b8ff7c5e", "MacAddress": "02:42:ac:12:00:03", "IPv4Address": "172.18.0.3/16", "IPv6Address": "" }, "f57f5f1f69351245932885c2de271d387df0055b1c51a17242c8bc1e941ed32b": { "Name": "eqidmanager_app_1", "EndpointID": "b89d144948ee58870e07b9d1cfc5fd42f1bfe0a4b15e4fc2905d13136acb0a7e", "MacAddress": "02:42:ac:12:00:02", "IPv4Address": "172.18.0.2/16", "IPv6Address": "" } }, "Options": {}, "Labels": { "com.docker.compose.network": "default", "com.docker.compose.project": "eqidmanager", "com.docker.compose.version": "1.24.0" } } ]View Code
本实例中宿主机在这个eqidmanager_default 网桥上的网关是 172.18.0.1,所以在docker-compose.yml 文件中配置了上述【extra_hosts】,在对应的app容器内我们cat /etc/hosts 会发现新增的映射记录:
相应的我们连接字符串是 :
"connectionstrings": {
”sqlite": "Data Source=EqidManager.db",
"redis": "dockerhost:6379,password=****@1,connectTimeout=10000,writeBuffer=40960"
},
That‘s all, 编写一个企业级docker-compose.yml 文件需要对项目业务流程和部署流程有全盘了解,同时必须要具备完备的计算机操作原理和网络原理知识;
当然,当你编写完一个企业级docker-compose.yml文件并成功运行,这也印证了你已经全盘熟悉项目架构同时也帮你温习了丢失已久的 计算机操作原理和网络原理,
心中窃喜, docker-compose是个好东西,越用越香,
希望本文对初涉容器平台的同学能有一个抛砖引玉的效果。
作者:Julian_酱感谢您的认真阅读,如有问题请大胆斧正,如果您觉得本文对你有用,码甲何必为难码甲,不妨帮忙点个 或加关注,蟹蟹 ~。。~
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置注明本文的作者及原文链接,否则保留追究法律责任的权利。
- 使用 k8s/docker-compose 部署 zookeeper集群
- dockercomposeyml 测试
- Linux下安装docker-compose记录
- docker-compose命令详解
- docker swarm compose
- docker-compose
- Docker系列教程21-Docker Compose快速入门
- 使用docker-compose搭建AspNetCore开发环境
- 如何使用Docker、Docker-Compose和Rancher搭建部署Pipeline(四)
- docker-compose 安装TYK环境(4个Docker:dashboard、gateway、mongo、redis)
- 阿里云上Docker Compose部署wordpress
- Docker,compose,kitematic Overview and build Php WordExpress
- docker: docker-compose 编排lnmp容器
- Docker compose操作指南
- ubuntu 16.04 安装docker、docker-compose
- Docker Compose 版本过高(Docker版本不匹配),降低docker-compose版本
- docker-compose 文件的编写
- Docker学习之Compose
- 通过docker-compose和ansible,进行自动发版
- ubuntu下安装docker-compose