Tag: docker compose

如何设置多个指向docker上相同值的envvariables?

我有几个容器,我和docker-compose一起运行。 其中之一是mysql,它需要设置一些variables。 我有.env文件中的那些: MYSQL_USER='my_user' MYSQL_PASSWORD='my_password' MYSQL_ROOT_PASSWORD='supersecretpassword' MYSQL_DATABASE='my_database' 我能够成功启动mysql容器。 问题出现在我想使用另一个数据库迁移服务时,需要在.env文件中设置以下variables: SERVICE_DBUSER='my_user' SERVICE_DBPASSWORD='my_password' SERVICE_DBNAME='my_database' 而我想写的( 这不起作用 ),以避免重复,是这样的: SERVICE_DBUSER="$MYSQL_USER" SERVICE_DBPASSWORD="$MYSQL_PASSWORD" SERVICE_DBNAME="$MYSQL_DATABASE" 但docker工人不承认这一点,并没有执行replace。 在docker docs中 ,它也表示expects each line in an env file to be in VAR=VAL format 。 我的问题是,是否有可能避免重复? 非常感谢。

在Docker容器中“权限被拒绝”,除非–privileged = true

我试图运行一个nginx容器作为服务,并在主机和容器之间共享2个卷,以便一个目录中的文件自动与另一个配对目录共享。 我的docker-compose.yml如下: version: '2' services: nginx: image: nginx build: . ports: – "5000:80" volumes: – /home/user1/share:/share/user1 – /home/user2/share:/share/user2 restart: always 我现在唯一可以做到这一点的方法是通过添加privileged: true对docker-compose文件是privileged: true ,但是由于安全性的要求,我不允许这样做。 当试图访问容器中的卷时,出现以下错误: [root@host docker-nginx]# docker exec -it dockernginx_nginx_1 bash root@2d574f9c6131:/# ls /share/user1/ ls: cannot open directory /share/user1/: Permission denied 即使将自己附加在容器上使用下面的参数禁止我访问资源(或至less列出内容): docker exec -it –privileged=true -u 6004:6004 dockernginx_nginx_1 bash (注意: 6004:6004恰好是传递给/share/user1/的id:gid所有权) 有没有任何方式访问的内容,而不build立与提升特权的nginx service […]

docker重新启动postgres时丢失的数据

我正在用docker-compose.yml运行一个postgres实例 – postgres: restart: always image: postgres:latest volumes: – /data:/var/lib/postgresql ports: – "5432:5432" environment: – POSTGRES_USER=admin – POSTGRES_PASSWORD=123456 – POSTGRES_DB=mydb – PGDATA=/var/lib/postgresql/data 我已经添加了几行几行。 我在文件中做了一个小改动,添加了container_name: postgres ,然后用docker-compose up -d重新启动 现在当我login到数据库,我没有看到任何表/数据。 psql -h ###### -p 5432 -d mydb -U admin –password 数据目录是作为卷添加的,并且是完整的。 这与初始化postgres有关吗? 更新2016/10/02 请注意, /data是安装在主机docker-machine上的外部硬盘驱动器。 更新2016/10/02 另外我注意到,当我改变重命名docker-compose.yml的位置(从/home/ubuntu/dev/docker-storage/docker-compose.yml到/home/ubuntu/dev/storage/docker-compose.yml ),并做一个docker-compose up -d ,我得到一个错误说 ERROR: for postgres Conflict. The […]

不能在Vagrant上使用版本2的docker-compose文件

我有一个莫名其妙的问题。 我无法在stream浪客上使用docker-compose版本2文件。 (如果主机是15.10 ubuntu)。 我得到以下错误: Docker引擎是小于Compose所需的最小值。 您当前的项目需要1.10.0或更高版本的Docker引擎 我使用的stream行文件如下: # -*- mode: ruby -*- # vi: set ft=ruby : # SET THE IP ADDRESS AND BRIDGE SELECTION TO MATCH YOUR NETWORK # unless Vagrant.has_plugin?("vagrant-docker-compose") system("vagrant plugin install vagrant-docker-compose") system("vagrant plugin install vagrant-vbguest") puts "Dependencies installed, please try the command again." exit end VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) […]

Docker Compose w / Gulp – 找不到本地gulp

我正在尝试在Docker容器中使用gulp。 我有以下的Dockerfile FROM golang:alpine RUN apk –update add –no-cache git nodejs RUN npm install –global gulp ENV GOPATH=/go PATH=$PATH:/go/bin VOLUME ["/go/src/github.com/me/sandbox", "/go/pkg","/go/bin"] WORKDIR /go/src/github.com/me/sandbox CMD ["gulp"] 我有以下docker-compose.yml version: '2' services: service: build: ./service volumes: – ./service/src/:/go/src/github.com/me/sandbox docker-compose build构build成功构build,但是当我运行docker-compose up ,出现以下错误消息 Recreating sandbox_service_1 Attaching to sandbox_service_1 service_1 | [22:03:40] Local gulp not found in /go/src/github.com/me/sandbox service_1 […]

使用docker卷保持数据库

我试图在docker容器中保存postgres数据,这样只要docker-compose down and docker-compose up -d不会丢失以前会话的数据。 我一直无法做到这一点 – 将容器拉下来,然后再次按常规方式删除数据。 这是我目前的docker-compose.yml: version: '2' services: api: build: . ports: – '8245:8245' volumes: – .:/home/app/api – /home/app/api/node_modules – /home/app/api/public/src/bower_components links: – db db: build: ./database env_file: .env ports: – '8246:5432' volumes_from: – dbdata dbdata: image: "postgres:9.5.2" volumes: – /var/lib/postgresql/data 帮帮我?

Dockerized PostgreSQL:psql:致命:数据库系统正在启动

我正在尝试构build和运行两个托pipePostgreSQL和Citus扩展使用ansible-container Docker ansible-container 。 我知道Citus提供容器,但是我想build立自己的容器。 我的container.yaml如下所示: version: '2' services: database_master: image: hackermd/ubuntu-trusty-python user: postgres expose: – 5043 entrypoint: ['dumb-init', '–'] command: ['/usr/bin/pg_ctlcluster', '9.6', 'master', 'start'] links: – database_worker depends_on: – database_worker database_worker: image: hackermd/ubuntu-trusty-python user: postgres expose: – 9700 entrypoint: ['dumb-init', '–'] command: ['/usr/bin/pg_ctlcluster', '9.6', 'worker', 'start'] 在构build过程中,我可以通过pg_ctlcluster启动和停止集群,并成功完成。 但是,当我随后运行容器时,出现以下错误: $ docker logs ansible_database_master_1 Removed stale […]

docker-compose up“错误:处理tar文件时出错(archive / tar:invalid tar header)

我无法运行docker-compose up或docker-compose build –no-cache 。 两者均以ERROR: Error processing tar file(archive/tar: invalid tar header)退出ERROR: Error processing tar file(archive/tar: invalid tar header) 。 我通过跑步使自己陷入了这种状况 要停止和移除容器: docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) 要删除所有图像: docker rmi $(docker images -q) 我已经尝试了以下内容: docker-compose ps不会列出任何容器或图像。 docker ps -a也没有列出任何容器。 docker image list不列出任何图像。 我在debugging模式下运行dockerd ,我看到: DEBU[0998] Calling GET […]

如何通过相同的“docker-compose up”调用来分享所有docker集装箱之间的值?

上下文 我们正在将一个较旧的应用程序迁移到docker,并且作为第一步我们正在处理一些限制。 数据库还不能放在容器中,而且是我们团队中所有开发人员共享的。 所以这个问题是为了解决临时性的问题。 为了不与使用相同数据库的其他开发人员冲突,每个开发人员机器都有一个系统来启动应用程序,并为其机器所独有的值。 每个容器应该使用相同的值。 题 我们使用docker-compose来启动容器。 有没有办法提供一个(环境)variables,它被传播到所有的容器? 我如何去做: 我docker-compose.yml看起来像这样: my_service: image: my_service:latest command: ./my_service.sh extends: file: base.yml service: base environment: – batch.id=${BATCH_ID} 那么我认为运行BATCH_ID=$somevalue docker-compose up my_service会填写${BATCH_ID} ,但似乎并没有这样工作。 有另一种方法吗? 更好的方法? 可选:理想情况下,应该包含所有东西,以便开发人员只需调用docker-compose up my_service可以自己docker-compose up my_service一个计算值并传递给所有的容器。 但从我在网上看到的,我认为这是不可能的。

在使用docker撰写时将ES_JAVA_OPTSvariables与空格一起传递

我试图运行使用docker撰写Elasticsearch,但我不知道如何正确地通过ES_JAVA_OPTS="-Xms512m -Xmx512m"环境variables。 我已经尝试了很多单引号和双引号的组合,但它们都导致: Error: Could not find or load main class "-Xms512m 。 我的docker组成configuration是: elasticsearch: image: "docker.elastic.co/elasticsearch/elasticsearch:5.4.3" ports: – "6379:6379" environment: – "http.host=0.0.0.0" – "transport.host=127.0.0.1" – "xpack.security.enabled=false" – 'ES_JAVA_OPTS="-Xms512m -Xmx512m"' 这个环境variables在直接运行容器时工作得很好: docker run –detach \ –name elasticsearch \ –publish 9200:9200 \ –env "http.host=0.0.0.0" \ –env "transport.host=127.0.0.1" \ –env "xpack.security.enabled=false" \ –env "ES_JAVA_OPTS=""-Xms512m -Xmx512m""" \ docker.elastic.co/elasticsearch/elasticsearch:5.4.3 […]