Articles of docker compose

Docker-compose Predis不是通过PHP连接的

我正在尝试使用docker连接PHP和redis(撰写) 泊坞窗,compose.yml version: '2' services: redis: image: redis:3.2.2 php: image: company/php:dev7 volumes: – .:/var/www/ networks: – net links: – redis nginx: image: company/nginx volumes: – .:/var/www/ – ./docker/nginx_conf:/etc/nginx/conf.d/ networks: – net ports: – 80:80 networks: net: driver: bridge 这一切运作良好,我能够运行nginx和php。 但是,当我试图与Redit连接它告诉我它不能得到地址信息: 致命错误:未捕获Predis \ Connection \ ConnectionException:php_network_getaddresses:getaddrinfo失败:名称或服务未知[/ tcp:// redis:6379]在/var/www/htdocs/vendor/predis/predis/src/Connection/AbstractConnection.php在线155 这是我试图连接的方式: $client = new \Predis\Client([ 'host' => 'redis', […]

基于Docker的Rails应用程序的nginx维护页面

我想我有一个鸡与鸡蛋的情况: 我的Rails应用程序是基于Docker的,我为nginx,Rails,Resque worker,Redis和MySQL提供了几个图像。 我目前的部署实施(简单地说)是: docker-compose build docker-compose down … compile assets … migrate docker-compose up 哪个效果很好,但是当然如果我在部署期间浏览到应用程序,我没有任何反应,这不是很好的用户体验。 我知道在站点处于维护模式时提供的nginx中设置了一个“维护”页面,但是nginx图像是docker-compose规范的一部分,所以也会下降。 将所有的图像放在一个docker-compose规范中,确实使部署更容易 – 如果任何图像(包括nginx)中的任何内容发生变化,将会自动部署。 特别是因为nginx,Rails,MySQL等都在同一个networking中。 如果nginx是docker-compose规范的一部分,那么我应该如何在应用程序重新部署时继续提供维护页面? (如果它有所作为,我使用主机上的gitlab和gitlab-runner容器来执行从回购部署。) 谢谢

nginx的“env”指令在这里是不允许的

我使用docker-compose nginx ,并希望docker-compose将SERVER_NAME作为环境variables传递给nginx 。 我创build了下面的nginxconfiguration文件: myconf.conf: # Environment variables are used to dynamically set SERVER_NAME # from docker-defined environment variable. This logic is stolen from: # # https://docs.apitools.com/blog/2014/07/02/using-environment-variables-in-nginx-conf.html # https://github.com/wantedly/nginx-image-server/blob/master/files/nginx.conf env SERVER_NAME; upstream django { server workflows-django:8000; } server { listen 80; perl_set $server_name_from_env 'sub { return $ENV{"SERVER_NAME"}; }'; server_name $server_name_from_env; return 301 https://$server_name$request_uri; } […]

如何在docker上设置nginx中的大量dynamic虚拟主机?

如何在nginx中设置大量dynamic的虚拟主机如这里所看到的除了使用docker作为主机? 我目前有这样的设置: # default.conf server { root /var/www/html/$http_host; server_name $http_host; } 并在我的Dockerfile COPY default.conf /etc/nginx/sites-enabled/default.conf 而我build立的形象和运行后: docker run -d 80:80 -v www/:/var/www/html 但是,当我在我的主机文件中指向一个新的域(example.dev)并且创build一个www / example.dev / index.html。 它根本不起作用。

针对Docker容器的Nginx反向代理

我有一个反向代理到我的Docker服务的问题。 我有一个IP 10.0.0.163的本地机器,并运行与它的nginx和portainer的Docker堆栈(这个问题只有他们很重要)。 泊坞窗,compose.yml: … portainer: image: portainer/portainer ports: – "9000:9000" volumes: – "/var/run/docker.sock:/var/run/docker.sock" – "/mnt/StorageDrive/Portainer:/data" deploy: placement: constraints: [node.role == manager] networks: … – proxy reverse-proxy: image: reverseproxy:latest ports: – "80:80" networks: – proxy networks: … proxy: nginx.conf: worker_processes 1; ## Default: 1 events { worker_connections 1024; } http { sendfile on; server { […]

Docker和小型生产服务器基础设施build议

我搞清楚如何设置我的生产服务器的最佳方式,但我有点卡住如何正确地做到这一点: 目前,我所有的Web应用程序都被dockerified ,我有: 一个nginx前端容器,将请求路由到多个后端容器: 一个Symfony应用程序 两个WordPress的博客 一个NodeJS应用程序 一个用于数据库存储的MySql容器 一个MongoDB容器也是如此 所有这些基础设施都是使用docker-compose开始的。 这工作正常,但它听起来太“monolitihic”对我来说: 我不能停止一个容器而不重新启动所有其他容器。 我无法添加其他Web应用程序,无需重新启动一切 我没有办法在崩溃后自动重启容器… 这是我第一次这样做,你知道一些最佳实践或软件,可以帮助我提高我的生产服务器? 非常感谢 !

docker集装箱的IP在重新启动时更改吗?

我是docker的新手,我一直在我的应用程序docker化在一个单一的服务器。 到目前为止,一切都很好,工作。 但是,我不明白一件事。 我正在使用docker-compose(我还没有为我的项目创builddockerfile),并且在docker-compose中有这个ports属性。 如果我写这样的东西: ports: 8085:80 它将听取0.0.0.0:8085,这意味着外面的世界已经访问我的服务器。 经过一些讨论和谷歌,我发现我可以在我的docker桥networking中的IP地址,并轻松地做端口映射: ports: 172.17.0.1:8085:80 这将只听172.17.0.1:8085,这是伟大的,因为它只是在内部监听,我的nginx代理的stream量到必要的端口。 (例如, proxy_pass http://172.17.0.1:8085 )。 在了解了更多关于docker的信息并了解其工作原理后,我意识到所有这些容器都有自己的IP地址,只有这些地址才暴露出来。 例如,我的一个“web”容器的IPv4地址是172.17.0.10,端口80是公开的。 如果我对这些容器中的一个执行docker inspect ,我会看到容器的IP地址。 现在,我想在我的nginx中使用这些IP地址。 而不是proxy_pass http://172.17.0.1:8085 ,我想要做http://172.17.0.10 。 我个人认为这是一个非常优雅的界面,但有一件事情关注我。 如果我重新启动机器会发生什么? 所有的容器都会以某种顺序启动。 如果我有5个Web容器,并且它们以随机顺序启动,我可以确定这些容器的IP是相同的吗? 或者他们会改变? 我应该总是使用docker-compose中的ports来供nginx使用吗? 如果是的话,我怎样才能有不同的IP地址,而不是不同的IP地址? 如果我创build另一个dockernetworking接口(比如在子网172.17.1.0中),是否可以,并将该接口的不同IP分配给公开的“公共”端口? 我的意思是基本上在一个容器中使用172.17.1.1:80:80在另一个容器中使用172.17.1.1:80:80 。

NGINX反向代理不能正常工作

我使用以下configuration将Docker容器链接到NGINX容器。 node1parsing为** / etc / hosts中的一个条目是你真正需要知道的这个部分 worker_processes 4; events { worker_connections 1024; } http { upstream node_app { server node1:8080; } server { listen 80; location / { proxy_pass http://node_app; } } } 当我点击http:// {host-machine-ip}时,我得到正确的页面,但我期待如果我改变位置/ 位置/服务如下,它不起作用,它返回一个404。 worker_processes 4; events { worker_connections 1024; } http { upstream node_app { server node1:8080; } server { listen 80; […]

Docker-registry v2与tls和基本authentication背后的nginxauthentication错误

简而言之:我无法使用my.domain.ch名称从外部(本地计算机运行MAC)login我的docker-registry(托pipe在ubuntu-vm(14.04LTS)的servercenter中)。 我可以从运行registry的ubuntu-machine(vm-2)成功login'docker login http:// localhost:5000 ' 这是我的设置: vm-1:在Ubuntu 14.04上用作反向代理的nginx / 1.10.1(这里没有安装docker): upstream registry { server vm-2:5000 fail_timeout=5s; } server { listen 80; server_name my.domain.ch; # server_name ; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name my.domain.ch; # server_name ; charset utf-8; keepalive_timeout 5; add_header Docker-Distribution-Api-Version registry/2.0 always; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; ssl_ecdh_curve secp521r1; […]

dockerNGINX代理不转发Websockets

NGINX代理传递HTTP GET请求而不是WebSocket握手到我的Django应用程序。 事实: 其余的非websocket代理django应用程序是伟大的。 如果我直接连接到django应用程序容器,我可以让WebSockets工作。 (下面的相关日志条目。) nginxconfiguration在我的开发机器上运行localhost(没有集装箱)。 (下面的日志示例) 相关日志: 达芙妮日志时通过集装箱的nginx代理连接: `xxx.xxx.xxx.xxx:40214 – – [24/May/2017:19:16:03] "GET /flight/all_flight_updates" 404 99` 达芙妮日志绕过集装箱代理,并直接连接到服务器: xxx.xxx.xxx.xxx:6566 – – [24/May/2017:19:17:02] "WSCONNECTING /flight/all_flight_updates" – – xxx.xxx.xxx.xxx:6566 – – [24/May/2017:19:17:02] "WSCONNECT /flight/all_flight_updates" – – 本地主机testingnginx(非集装箱)configuration工程: [2017/05/24 14:24:19] WebSocket HANDSHAKING /flight/all_flight_updates [127.0.0.1:65100] [2017/05/24 14:24:19] WebSocket CONNECT /flight/all_flight_updates [127.0.0.1:65100] configuration文件: 我docker-compose.yml : version: '3' services: db: […]