Tag:

Terraform可以从remote_exec命令设置variables吗?

我正在尝试使用Terraform在AWS中构build一个Docker Swarm集群。 我已经成功地启动了一个Swarmpipe理器,但是我正在设法解决如何将连接键传递给worker(将在pipe理器之后创build)。 我想要一些运行docker swarm join-token worker -q命令的方法,它可以设置为Terraformvariables。 这样,工作人员可以有一个像docker swarm join ${var.swarm_token} ${aws_instance.swarm-manager.private_ip}一样的remote_exec命令docker swarm join ${var.swarm_token} ${aws_instance.swarm-manager.private_ip} 我怎样才能做到这一点? 我的configuration如下: resource "aws_instance" "swarm-manager" { ami = "${var.manager_ami}" instance_type = "${var.manager_instance}" tags = { Name = "swarm-manager${count.index + 1}" } provisioner "remote-exec" { inline = [ "sleep 30", "docker swarm init –advertise-addr ${aws_instance.swarm-manager.private_ip}" "docker swarm join-token worker […]

无法运行rake db:在Docker-compose中的Dockerfile中创build

我有一个像本教程中的Dockerfile和Dockerfile docker-compose.yml ,除了我从现有的应用程序开始。 我docker-compose.yml如下所示: db: image: postgres ports: – "5432" web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: – .:/myapp ports: – "3030:3030" links: – db 和Dockerfile : FROM ruby:2.1.4 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs RUN mkdir /myapp WORKDIR /myapp ADD Gemfile /myapp/Gemfile RUN […]

docker服务更新:“无法在registry上访问图像以logging它的摘要”

我在Amazon的Elastic Container Registry(ECR)上有一个图像,我想在Docker单节点群中将其作为Docker服务进行部署。 目前该服务正在运行图像latest标签的旧版本,但是我已经将latest版本的latest标签上传到了ECR。 运行docker service update –force my_service在我的群集节点上使用映像XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my_service:latest运行docker service update –force my_service ,导致: image XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my_service:latest could not be accessed on a registry to record its digest. Each node will access XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my_service:latest independently, possibly leading to different nodes running different versions of the image. 这似乎阻止节点从registry中拉取latest标记的新副本,并且正确更新该服务。 我正确logindocker login到ECR,并运行docker pull XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my_service:latest工作正常(并返回一个摘要。) 为什么docker service update无法从ECRregistry读取摘要,尽pipe图像可用?

使用Docker我得到的错误:“SQLSTATE 没有这样的文件或目录”

我正在使用Docker创build一个容器来testing我的Mac上构build于PHP和MySQL上的Web应用程序。 我的PHP应用程序是使用MVC和路由的无脂框架构build的。 我有两个Dockerfiles,一个用于MySQL,一个用于PHP。 我已经成功地使用了testing的Docker应用程序,所以我相信我的映像安装正确。 错误的主要部分: Internal Server Error SQLSTATE[HY000] [2002] No such file or directory [fatfree/lib/DB/SQL.php:466] PDO->__construct('mysql:host=127.0.0.1;port=3306;dbname=robohome','root','password',array(1002=>'SET NAMES utf8;')) [fatfree/app/Controllers/Controller.php:24] DB\SQL->__construct('mysql:host=127.0.0.1;port=3306;dbname=robohome','root','password') 请注意,如果我连接使用127.0.0.1而不是localhost我得到一个稍微不同的错误,说: SQLSTATE[HY000] [2002] Connection refused 我的PHP Dockerfile: FROM php:5.6-apache RUN docker-php-ext-install mysqli pdo pdo_mysql RUN a2enmod rewrite 我的MySQL Dockerfile: FROM mysql:5.7 ENV MYSQL_ROOT_PASSWORD password ENV MYSQL_DATABASE robohome COPY ./schema.sql /docker-entrypoint-initdb.d/ 我的Controller.php文件错误提到第24行: <?php namespace Controllers; […]

在Docker环境中使用Symfony进行生产

我正在使用Docker-Compose在Docker上实现一个symfony应用程序。 我将至less有以下容器: Nginx的 Rabbitmq服务器 PHP-FPM MySQL的 Solr的 目前我们也有使用上述设置的开发环境。 Symfony应用程序存储在本地(主机),然后在PHP-FPM容器上使用一个卷,以便它可以读取应用程序 – 这很好。 我们打开php-fpm容器来运行composer / app / console命令。 我们还手动运行使用rabbitmq服务器消息的使用者(Symfony命令)。 我在生产中有什么select? 1)我可以创build一个运行应用程序的容器,然后允许其他容器使用它吗? 我看到php-fpm容器需要访问应用程序代码 – 但是我也想创build一个容器来运行一个消费者 – 传递服务的名字来运行到容器 – 这意味着我可以有一个单一的图像可以灵活地启动来处理来自任何队列的消息。 日志/caching在这个选项中会发生什么? 2)是否将应用程序存储在每个需要它的图像中? 这是我最不喜欢的select,然后更新我需要build立每个图像的应用程序 3)我还没有探索的东西? 我想允许对应用程序进行简单的更新 – 也许是脚本化的,但是我也想最大限度地减less停机时间 – 我可以使用haproxy或类似的东西来做到这一点 – 有没有人有生产中运行多容器symfony应用程序的任何经验?

如何将本地托pipe的MySQL数据库连接到Docker容器

我知道这个问题可能会重复,但我没有得到任何明确的答案。 因为我对docker概念完全陌生。 通过docker-compose.yml我能够运行应用程序。 现在我们要将应用程序移动到生产环境,但是我们不想使用容器数据库。 那么有什么办法,以便我可以连接我的本地MySQL数据库与应用程序使用docker-compose ? 我的docker-compose.yml如下所示: version: '3' services: web-app: build: context: . dockerfile: web-app/Dockerfile ports: – 8080:8080 links: – app-db app-db: build: context: . dockerfile: app-db/Dockerfile environment: – MYSQL_ROOT_PASSWORD=password – MYSQL_DATABASE=Optimize ports: – 3306:3306 而不是app-db部分,我只想连接到我本地托pipe的mysql数据库。 任何帮助将不胜感激。

用docker-compose运行docker镜像

我有我的简单的应用程序在C#中,连接到PostgreSQL。 我想创build这个应用程序的形象,只是与docker运行。 我使用时一切正常: $ docker build $ docker run postgres $ docker run my_app 此外,当我使用从应用程序目录撰写时,一切都可以: $ docker-compose build $ docker-compose up 但是有没有机会使用docker-compose为我以前build造的图像? 我想发布这个图像到我的回购和我的团队的其他人只是下载并运行这个图像(应用程序+数据库)。 当我编写构build和下一步撰写运行my_app我连接到数据库时有exception: dbug: Npgsql.NpgsqlConnection[3] Opening connection to database 'POSTGRES_USER' on server 'tcp://postgres:5432'. Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.AggregateException: One or more errors occurred. (No […]

为什么docker从docker文件构build镜像会在不正确的构build出口时创build容器?

我使用docker从docker文件构build图像。 在这个过程中有一些错误发生,所以编译出口错误代码。 当我运行docker images我可以看到一个未标记的图像。 所以我试图删除它docker rmi xxxxx 。 但它总是失败,它说图像不能被删除,因为它被一个停止的容器使用。 所以我深入一点。 我运行docker ps -a ,现在我可以看到构build过程失败时创build的已停止容器的长列表。 为什么会有容器创build? 我认为图像在编程中就像“类”的概念,而容器是类的实例。 在图像成功构build之前,为什么会创build实例? 如何在没有所有停止的容器的情况下构build图像?

如何通过docker-php-ext-install为php安装扩展?

为了解决问题 ,我现在正在尝试安装mysql pdo通过 docker-php-ext-install 正如在PHP图像的README中指出的那样。 然而,我的电话没有说明: Libraries have been installed in: /usr/src/php/ext/mysqli/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the […]

为什么Docker Compose重新启动可以渲染容器输出越来越多?

我正在编写一个基于Docker Compose的Web应用程序,它有许多后台系统 – 一个HTTP API,一个HTTP代理和一个队列。 所有东西都在PHP的Alpine容器中,PHP 5.6或7.0。 我最初在API容器内的Supervisor中设置了队列,工作正常。 然而,Supervisor / Python使得容器比他们应该更加胖(80M而不是25M),所以我把队列移到了自己的容器中。 它生活了大约5分钟,为了重新启动而退出,我在Supervisor中使用了自动重启系统,所以我已经在Docker Compose中交换到了重启系统。 我正在使用Compose YAML格式的版本2。 当队列启动时,它会向stdout呈现一个简单的消息: queue_instance | Starting queue watcher (path=/remote/queue, proxying to proximate-proxy:8081) 当我最初做docker-compose up时,这很好。 但是,对于每次重新启动,我都会收到其中三条消息,然后是五条消息,以此类推,没有限制。 如果我做docker ps然后它表明只有一个队列运行: halfer@machine:~/proximate-app$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a9c94558769d proximate-app "/tmp/container-st…" 2 hours ago Up 2 hours 0.0.0.0:8084->8084/tcp app_instance 7e48d6aec459 proximate-api "sh […]