Tag: docker compose

Docker postgres不会在docker-entrypoint-initdb.d中运行init文件

基于Docker的Postgres 文档 ,我可以在/docker-entrypoint-initdb.d创build任何*.sql文件并自动运行。 我有init.sql包含CREATE DATABASE ronda; 在我docker-compose.yaml ,我有 web: restart: always build: ./web expose: – "8000" links: – postgres:postgres volumes: – /usr/src/app/static env_file: .env command: /usr/local/bin/gunicorn ronda.wsgi:application -w 2 -b :8000 nginx: restart: always build: ./nginx/ ports: – "80:80" volumes: – /www/static volumes_from: – web links: – web:web postgres: restart: always build: ./postgres/ volumes_from: – […]

Docker项目结构与git submodules

当我看到使用Docker的git项目时,docker只是添加到包含源代码一个应用程序的git项目中。 但是,如果我想用docker-compose来编排我的git-projects的多个工作项目呢,因为他们一起工作(后端,前端,…)呢? 现在,我使用其他两个git项目的源代码和一些更自我创build的Dockerfiles – 所以我的撰写文件现在有7个服务(也有一些来自docker hub的公共项目)。 我还需要为不同的用例创build略有不同的.yml文件(只是使用不同的环境variables)。 有没有最好的做法,如何构build这样一个项目? 我的项目是这样的: my-project/ |__ env/ | |__ service-1/ | | |__ default.env | | |__ usecase-1.env | |__ service-2/ | |__ default.env | |__ usecase-1.env |__ override/ | |__ usecase-1.yml |__ src/ | |__ service-1/ | | |__ service-1/ (git submodule) | | |__ Dockerfile | |__ service-2/ […]

docker-compose – 如何转义环境variables

使用docker-compose v2环境variables可以简单地设置: enviroment: – MONGO_PATH=mongodb://db-mongo:27017 完整docker-compose.yml文件是: version: '2' services: web: build: . environment: – MONGO_PATH=mongodb://db-mongo:27017 ports: – "3000:3000" volumes: – .:/app – /app/node_modules depends_on: – db-mongo – db-redis db-mongo: image: mongo restart: unless-stopped command: –smallfiles ports: – "27017:27017" volumes: – ./data:/data/db […] 但是,我怎么能逃避不是一个普通的string的环境variables? {"database": {"data": {"host": "mongo"}}} 我试过了: NODE_CONFIG=\{"database": \{"data"\: \{"host": "mongo"\}, "session": \{"host": "redis" […]

错误“docker-compose”当我用pipe道使用sh(echo“docker-compose …”| sh)

我有一个多容器的应用程序。 为了便于安装,我决定使用包装图像。 我的预期是如下 $ docker run my_application install | sh – >从registry中拉出所有相关的图像 $ docker run my_application up | sh – >做一些初步的工作和所有的容器 但我被困在下面的问题。 $ echo "docker-compose exec cassandra cqlsh -e 'desc keyspaces'" | sh Traceback (most recent call last): File "<string>", line 3, in <module> File "compose/cli/main.py", line 57, in main File "compose/cli/main.py", line 108, in […]

Docker-compose容器使用主机DNS服务器

我在“定制”桥梁networking中的“Ubuntu 16.10服务器”上运行了多个容器,编写了2.9(在yml版本2.1中)。 我的大部分容器在内部都使用相同的端口,因此我无法使用“主机”networking驱动程序。 我的容器都链接在一起,使用专用的links属性。 但是,我也需要访问暴露在我的容器外面的服务。 这些服务具有在我公司的DNS服务器中注册名称的专用URL。 虽然我没有问题,使用公共DNS,并从我的容器内达到任何公共服务,我只是无法达到我的私人DNS。 请问,你知道一个工作解决scheme使用私人DNS从容器? 或者甚至更好,使用主机的networkingDNSconfiguration? PS:当然,我可以使用extra_hosts -compose.yml文件中服务的extra_hosts属性链接到我公司的服务。 但是…这绝对不是拥有DNS的目标。 我不想在我的YML文件中注册我的所有服务,我不想每次在我公司更新服务的IP时更新它。 背景: 主机:Ubuntu 16.10服务器 Docker引擎:1.12.6 Docker撰写:1.9.0 docker-compose.yml:2.1 networking:自己的桥梁。 docker-compose.yml文件(解压): version: '2.1' services: nexus: image: sonatype/nexus3:$NEXUS_VERSION container_name: nexus restart: always hostname: nexus.$URL ports: – "$NEXUS_81:8081" – "$NEXUS_443:8443" extra_hosts: – "repos.private.network:192.168.200.200" dns: – 192.168.3.7 – 192.168.111.1 – 192.168.10.5 – 192.168.10.15 volumes_from: – nexus-data networks: – […]

docker组合服务的集中configuration

想象一下,一个非平凡的泊坞窗撰写应用程序,在一个Web应用程序的前面nginx和一些链接的数据存储: web: build: my-django-app volumes: – .:/code ports: – "8000:8000" links: – redis – mysql – mongodb nginx: image: nginx links: – web redis: image: redis expose: – "6379" mysql: image: mysql volumes: – /var/lib/mysql environment: – MYSQL_ALLOW_EMPTY_PASSWORD=yes – MYSQL_DATABASE=myproject mongodb: image: mongo 数据库很容易configuration(现在),容器公开很好的环境variables来控制它们(请参阅mysql容器),但是nginx什么? 我们需要为这个模板创build一个虚拟主机文件,对吗? 我不想推出我自己的形象,这将需要从不同的开发者的设置,每个更改的configuration重build,以testing ,通过舞台和生产 。 如果我们想以轻量级的方式通过翻转configuration选项来进行A / Btesting呢? 在这里需要一些集中的configurationpipe理 ,可能是由docker-compose控制的,可以将configuration文件写入共享卷? 随着新服务的添加,这只会变得更加重要(想象一下微服务云,而不是像在这个例子中那样是一个单一的web应用程序) 在docker-compose项目中pipe理configuration的正确方法是什么?

用于PHP 7的Docker gd模块

我有一个为Drupal 8configuration的docker文件,但在启动“docker-compose up”之后,一切顺利,但是在安装Drupal的时候,它显示我没有启用PHP的“gd”模块。 这里是我的Dockerfile: FROM php:7-fpm # Install modules RUN apt-get update RUN apt-get install -y software-properties-common RUN DEBIAN_FRONTEND="noninteractive" add-apt-repository ppa:ondrej/php RUN apt-get update RUN apt-get install -y vim curl wget build-essential software-properties-common git ca-certificates RUN apt-get install -y \ libbz2-dev \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng12-dev \ libxpm-dev \ libvpx-dev \ libmcrypt-dev \ libmemcached-dev […]

在Mac上的Docker机器:在Docker主机/ docker-machine上无法看到已安装的卷? 卷的物理存储位置在哪里?

我在一台Macbook Pro笔记本电脑上运行docker-machine(0.5.0)和docker-compose(1.5.0)来运行我的容器。 这意味着我使用docker-machine来创build我的virtualbox boot2docker驱动的HOST机器,它将运行我的docker守护进程并托pipe所有的容器。 我想我错过了关于HOSTS和VOLUME的概念,因为它们涉及到Docker和文档。 这是我的docker-compose.yml文件(网站只是build立php:5.6-apache图片): web: restart: "always" build: ./docker-containers/web ports: – "8080:80" volumes: – ./src:/var/www/html links: – mysql:mysql mysql: restart: "always" image: mysql:5.7 volumes_from: – data ports: – "3306:3306" environment: – MYSQL_ROOT_PASSWORD=XXX data: restart: "no" image: mysql:5.7 volumes: – /var/lib/mysql command: "true" Docker撰写卷的文件文档在这里: http : //docs.docker.com/compose/compose-file/ 它声明了卷 – 将path装载为卷,可选地在主机(HOST:CONTAINER)上指定path,或者访问模式(HOST:CONTAINER:ro)。 在这种情况下,主机是指由我的虚拟机创build的docker-machine,是否正确? 或者我的本地macbook文件系统? 在我的虚拟机上安装一个path到一个容器? 在networking下我声明: […]

Docker:应用程序可以通过docker-up来正常工作,但是如何通过Visual Studio来运行它并进行debugging?

我有几个项目,他们必须在独立的容器中运行,我也有一些共享库,应该是buit。 我发现以下文章如何做到这一点。 我只会显示一个项目的docker文件,因为它们是相同的: FROM microsoft/aspnetcore:2.0 AS base WORKDIR /app EXPOSE 80 FROM microsoft/aspnetcore-build:2.0 AS builder WORKDIR /src COPY *.sln ./ COPY Web/Web.csproj Web/ RUN dotnet restore COPY . . WORKDIR /src/Web RUN dotnet build -c Debug -o /app FROM builder AS publish RUN dotnet publish -c Debug -o /app FROM base AS production WORKDIR /app […]

使用Bitbucket Pipelines和Docker为Ruby on Rails项目设置CD

我很想在一个Ruby on Rails / PostgreSQL / Sidekiq项目中的Bitbucket Pipelines中进行连续部署,但是我正在努力让自己的头脑完全融合在一起,特别是如何在Docker镜像中使用postgres 。 我对Docker和Pipelines很新。 在我的谷歌search中,Docker谈到了使用docker-compose来创build一个bundle,所以我有一个Postgres容器和一个Sideqik容器,然后将它们与应用程序容器链接起来。 但是我不确定包和图像之间有什么区别,以及Bitbucket Pipelines是否支持包。 最终我想在Heroku上设置部署到临时环境,但是现在只要让rspec spec在Pipelines中工作就好了。 是否有一个已经设置了Ruby + PostgreSQL的公有图像? 如果不是,我从哪里开始? 我目前的Dockerfile看起来像这样: FROM postgres:9.4 FROM ruby:2.3.1-onbuild RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs postgresql-client 然后我运行docker build . 和docker run -it my-image /bin/bash和以下命令: root@a84ad0e7c16b:/usr/src/app# postgres bash: postgres: command not found root@a84ad0e7c16b:/usr/src/app# psql psql: could […]