标签: docker-compose

无法使用mongoose连接到mongo docker映像

我正在尝试使用node和mongo运行一个简单的docker设置:

Dockerfile:

 FROM node:8.9.4-alpine
 RUN mkdir /app
 WORKDIR /app
 COPY package.json /app/
 COPY package-lock.json /app/
 RUN npm install
 ADD . /app/
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml:

version: '3'

services:
  db:
    image: 'mongo'
    ports:
      - "27017:27017"
  api:
    build: .
    restart: always
    command: sh -c "npm install && npm run start"
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    environment:
      PORT: 3000
    depends_on:
      - db
Run Code Online (Sandbox Code Playgroud)

现在在我的app.js中,我像这样连接到mongo:

mongoose.connect('mongodb://localhost:27017')
  .catch(err => {
    console.log(err)
  })
Run Code Online (Sandbox Code Playgroud)

但是我得到了 failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] …

mongoose mongodb express docker docker-compose

1
推荐指数
1
解决办法
1385
查看次数

无法使用docker自动启动apache

我为php开发做了一个简单的自定义docker设置.到目前为止一切都按预期工作.我唯一无法弄清楚的是为什么apache2不会自动启动.

这是我的dockerfile:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y apache2 php libapache2-mod-php php-mcrypt php-mysql php-cli php-curl php-xml php-intl php-mbstring git vim composer curl

COPY . /var/www/example
COPY vhost.conf /etc/apache2/sites-available/example.conf

RUN a2ensite example
RUN chown -R www-data:www-data /var/www/example/logs
RUN service apache2 restart
Run Code Online (Sandbox Code Playgroud)

这是我的docker-compose.yml:

version: '2'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: myexampleapp
    ports:
        - 8080:80
    tty: true
Run Code Online (Sandbox Code Playgroud)

这是输出docker-compose up命令:

me@mydell:~/workspace/mydockercompose$ docker-compose up -d --build
Creating network "mydockercompose_default" with the default driver
Building app
Step 1/7 : FROM …
Run Code Online (Sandbox Code Playgroud)

apache ubuntu docker dockerfile docker-compose

1
推荐指数
1
解决办法
5325
查看次数

无法连接到Windows上以docker-compose开头的容器的暴露端口

我在访问应通过docker-compose将端口公开给主机的应用程序时遇到问题。这是一个可重现的示例:

我使用角度CLI创建一个新的角度应用程序:

ng new angular-docker
Run Code Online (Sandbox Code Playgroud)

然后,我在该目录中创建一个包含以下内容的Dockerfile:

FROM node:8

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app

RUN npm install

EXPOSE 4200

CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)

接下来,我在同一目录中创建一个docker-compose.yaml文件:

version: '3'

services:
  angular:
    build: .
    container_name: angular-docker
    volumes:
      - ./src:/usr/src/app/src
    ports:
      - "4200:4200"
Run Code Online (Sandbox Code Playgroud)

然后我运行:

docker-compose up
Run Code Online (Sandbox Code Playgroud)

我等到在docker-compose输出中得到以下行

angular-docker | ** Angular Live Development Server is listening on localhost: 4200, open your browser on http://localhost:4200/ **
Run Code Online (Sandbox Code Playgroud)

docker inspect angular-docker我看到的端口转发规则到位:

...
"Ports": {
            "4200/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "4200"
                }
            ]
        }, …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

1
推荐指数
1
解决办法
3222
查看次数

等待其他部署开始运行,然后再创建其他部署?

我正在使用REST API创建部署/服务。我发送带有包含JSON对象的正文的POST请求,该JSON对象在Openshift上创建应用程序。在调用所有API之后,这些对象将被实例化。

我有2个依赖于mongodb部署的部署,但是此mongodb需要花费一点时间才能开始运行,而依赖mongodb的两个部署则更早开始运行。由于mongodb连接失败(因为它尚未启动),因此这会破坏2个部署中的代码。

有2种可能的方法可以解决此问题。

  1. 在创建mongodb部署后,我延迟了一段时间,然后递归调用API以检查其状态(如果它没有运行)。

  2. 就像我们在docker-compose中进行更改一样,使用键depends-on告诉docker-compose首先应启动所有依赖项,然后再启动依赖项容器。

Openshift有什么方法可以实现?

mongodb openshift docker kubernetes docker-compose

1
推荐指数
1
解决办法
614
查看次数

Docker / Mongodb数据不持久

我在mongodb上运行Rails api服务器,都可以完美地找到工作,然后我开始将服务器移至docker。

不幸的是,每当我停止服务器(docker-compose down)并重新启动服务器时,所有数据都会丢失,并且数据库完全为空。

这是我的docker-compose文件:

version: '2'
services:
  mongodb:
    image: mongo:3.4
    command: mongod
    ports:
      - "27017:27017"
    environment:
      - MONGOID_ENV=test
    volumes:
      - /data/db

  api:
    build: .
    depends_on:
      - 'mongodb'
    ports:
      - "3001:3001"
    command: bundle exec rails server -p 3001 -b '0.0.0.0'
    environment:
      - RAILS_ENV=test
    links:
      - mongodb
Run Code Online (Sandbox Code Playgroud)

这是我的dockerfile:

FROM ruby:2.5.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

ENV APP_HOME /app

RUN mkdir $APP_HOME

WORKDIR $APP_HOME

COPY Gemfile* $APP_HOME/
RUN bundle install

COPY . $APP_HOME

RUN chown -R …
Run Code Online (Sandbox Code Playgroud)

mongodb docker docker-compose

1
推荐指数
1
解决办法
6014
查看次数

Docker Compose:暴露不起作用

docker-ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                NAMES
83b1503d2e7c        app_nginx      "nginx -g 'daemon ..."   2 hours ago         Up 2 hours                  0.0.0.0:80->80/tcp   app_nginx_1
c9dd2231e554        app_web        "/home/start.sh"         2 hours ago         Up 2 hours                  8000/tcp             app_web_1
baad0fb1fabf        app_gremlin    "/start.sh"              2 hours ago         Up 2 hours                  8182/tcp             app_gremlin_1
b663a5f026bc        postgres:9.5.1 "docker-entrypoint..."   25 hours ago        Up 2 hours                  5432/tcp             app_db_1
Run Code Online (Sandbox Code Playgroud)

他们都很好:

  • app_nginx与app_web很好地连接
  • app_web与postgres很好地连接

没有工作文件:

  • app_web无法与app_gremlin连接

泊坞窗,compose.yaml

version: '3'
services:
  db:
    image: postgres:9.5.12
  web:
    build: .
    expose:
      - "8000"
    depends_on:
      - gremlin
    command: /home/start.sh …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

1
推荐指数
2
解决办法
1689
查看次数

Docker-compose复制配置

我正在尝试为需要服务在后台运行的项目创建一个docker-compose。服务映像已存在,其中包含配置文件以及入口点[“ / usr / bin / java”,...]

我想更改配置文件的内容,但是我不确定在没有创建额外的dockerfile来重新创建具有适当文件的映像的情况下,做到这一点的最佳方法是什么?

由于入口点是/ usr / bin / java,所以我不确定如何使用docker-compose的命令来修改文件内容。

version: 2
services:
  myService:
    image: serviceA from registry
     # Would like to modify a config file's content...

  mainAPI:
     ...
Run Code Online (Sandbox Code Playgroud)

谢谢

docker dockerfile docker-compose

1
推荐指数
1
解决办法
7076
查看次数

Nginx symfony““ try_files”指令中的参数数目无效”

我正在对我的symfony应用程序进行docker化,但是我无法弄清楚为什么会出现以下错误:

web_1  | 2018/09/11 07:21:40 [emerg] 1#1: invalid number of arguments in "try_files" directive in /etc/nginx/conf.d/default.conf:6
web_1  | nginx: [emerg] invalid number of arguments in "try_files" directive in /etc/nginx/conf.d/default.conf:6
Run Code Online (Sandbox Code Playgroud)

这是我的配置:

server {
    server_name localhost;
    root /application/web;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/(index)\.php(/|$) {
        fastcgi_pass php:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
    }

    location ~ \.php$ {
        return 404;
    }

    error_log /var/log/nginx/project_error.log;
    access_log /var/log/nginx/project_access.log;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我的docker-compose.yml:

version: "3"
services:
    web:
        image: nginx:latest
        volumes: …
Run Code Online (Sandbox Code Playgroud)

nginx symfony docker docker-compose

1
推荐指数
1
解决办法
609
查看次数

如何从env_file获取docker-compose的端口?

我想使用env文件中定义的端口号,可以吗?以下是我的docker-compose.yml的内容:

version: '3'
services:
  flask:
    build:
      context: ./flask
      dockerfile: Dockerfile_flask
    env_file:
     - env_file.env
    ports:
     #- "5000:5000"
     - "${PORT}:${PORT}"  # I want to set port defined in the env file
    volumes:
      - ./logs:/app/flask/log
    restart: always
Run Code Online (Sandbox Code Playgroud)

这是env_file.env的内容

PORT=5000
Run Code Online (Sandbox Code Playgroud)

但是出现了一些错误:

WARNING: The PORT variable is not set. Defaulting to a blank string.
ERROR: The Compose file './docker-compose.yml' is invalid because:
services.flask.ports is invalid: Invalid port ":", should be [[remote_ip:]remote_port[-remote_port]:]port[/protocol]
Run Code Online (Sandbox Code Playgroud)

如果有可能,我应该怎么做?谢谢

@lvthillo,感谢您之前的回复。但是我还有另一个问题,就是我的烧瓶应用程序无法访问该端口。代码如下所示

import os
from flask import Flask

application = Flask(__name__)

print(os.getenv("PORT")) # this …
Run Code Online (Sandbox Code Playgroud)

port docker docker-compose

1
推荐指数
1
解决办法
1624
查看次数

depends_on不等待docker-compose 1.22.0中的其他服务

我当前的docker-compose.yml-

# This docker-compose file uses '.env' file present in the current directory, 
# for database credentials. If you want to change the credentials please 
# change the data in '.env'.
# '.env' file might be hidden as dot files are hidden please unhide to see it.
# Know more about '.env' file: https://docs.docker.com/compose/env-file/

version: '3'

services: 
  postgresdb:
    image: postgres:9.5
    environment: 
      POSTGRES_USER: ${ENV_POSTGRES_USER}
      POSTGRES_PASSWORD: ${ENV_POSTGRES_PASSWORD}
      POSTGRES_DB: ${ENV_POSTGRES_DB}
    volumes: 
      - "../app/volumes/postgres/data:/var/lib/postgresql/data"

  # This is python service. It uses python 3.6 as …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

1
推荐指数
2
解决办法
2581
查看次数