代码之家  ›  专栏  ›  技术社区  ›  Michael H.

Docker/MongoDB数据不持久

  •  1
  • Michael H.  · 技术社区  · 6 年前

    我用MongoDB运行了一个RailsAPI服务器,一切都很好,我开始把服务器移到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
    

    这是我的档案:

    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 nobody:nogroup $APP_HOME
    USER nobody
    
    ENV RACK_ENV test
    ENV MONGOID_ENV test
    
    EXPOSE 3001
    

    知道这里少了什么吗?

    谢谢, 迈克尔

    1 回复  |  直到 6 年前
        1
  •  9
  •   ET Come Back    6 年前

    在docker compose中,我认为你在mongodb服务中的“volumes”字段不太正确。我想

    volumes:
      - /data/db
    

    应该是:

    volumes:
      - ./localFolder:/data/db