title: How to create a Mongo Docker Image with default collections and data?
body: <p>I need support here to build my own mongo docker image.</p>
  
  <p>I have a list of scripts to create and insert data into the MongoDB that shall be called in my Dockerfile to deliver a docker image with default collections and data. </p>
  
  <p>Here is how my Dockerfile looks like currently:</p>
  
  <pre><code>FROM mongo:latest
  
  RUN mkdir -p /data/scripts
  
  COPY . /data/scripts
  
  RUN mongod --fork --logpath /var/log/mongodb.log --dbpath /data/db/
  
  RUN FILES=scripts/*-create.js
  RUN for f in $FILES; do mongo mydb $f; done
  
  RUN FILES=scripts/*-insert.js
  RUN for f in $FILES; do mongo mydb $f; done
  
  RUN mongod --shutdown
  </code></pre>
  
  <p>I've tried different options to start and stop mongod and always one of the two fail, the current script raise the following error:</p>
  
  <pre><code>There doesn't seem to be a server running with dbpath: /data/db
  </code></pre>
  
  <p><strong>Update</strong> </p>
  
  <p>After @Matt answer I could run successfully the command chain, but can't still see my database (called my-db), collections and data there. </p>
  
  <p>The current Dockerfile:</p>
  
  <pre><code>FROM mongo:latest
  
  RUN mkdir -p /data/db/scripts
  
  COPY . /data/db
  
  RUN mongod --fork --logpath /var/log/mongodb.log --dbpath /data/db \
      &amp;&amp; CREATE_FILES=/data/db/scripts/*-create.js \
      &amp;&amp; for f in $CREATE_FILES; do mongo 127.0.0.1:27017 $f; done \
      &amp;&amp; INSERT_FILES=/data/db/scripts/*-insert.js \
      &amp;&amp; for f in $INSERT_FILES; do mongo 127.0.0.1:27017 $f; done \
      &amp;&amp; mongod --shutdown 
  </code></pre>
  
  <p>The output from the docker build command: </p>
  
  <pre><code>Sending build context to Docker daemon 10.24 kB
  Step 1 : FROM mongo:latest
   ---&gt; c08c92f4cb13
  Step 2 : RUN mkdir -p /data/db/scripts
   ---&gt; Running in a7088943bb57
   ---&gt; 373c7319927d
  Removing intermediate container a7088943bb57
  Step 3 : COPY . /data/db
   ---&gt; 8fa84884edb7
  Removing intermediate container ae43e2c24fee
  Step 4 : RUN mongod --fork --logpath /var/log/mongodb.log --dbpath /data/db     &amp;&amp; CREATE_FILES=/data/db/scripts/*-create.js    &amp;&amp; for f in $CREATE_FILES; do mongo 127.0.0.1:27017 $f; done    &amp;&amp; INSERT_FILES=/data/db/scripts/*-insert.js    &amp;&amp; for f in $INSERT_FILES; do mongo 127.0.0.1:27017 $f; done    &amp;&amp; mongod --shutdown
   ---&gt; Running in 33970b6865ee
  about to fork child process, waiting until server is ready for connections.
  forked process: 10
  child process started successfully, parent exiting
  MongoDB shell version: 3.0.7
  connecting to: 127.0.0.1:27017/test
  MongoDB shell version: 3.0.7
  connecting to: 127.0.0.1:27017/test
  killing process with pid: 10
   ---&gt; 8451e43b7749
  Removing intermediate container 33970b6865ee
  Successfully built 8451e43b7749
  </code></pre>
  
  <p>But as I said, I still can't see the database, collections and data in my database using mongo shell.
  Also I connected to the running container and got the mongodb.log: </p>
  
  <pre><code>2015-11-06T16:15:14.562+0000 I JOURNAL  [initandlisten] journal dir=/data/db/journal
  2015-11-06T16:15:14.562+0000 I JOURNAL  [initandlisten] recover : no journal files present, no recovery needed
  2015-11-06T16:15:14.698+0000 I JOURNAL  [initandlisten] preallocateIsFaster=true 2.36
  2015-11-06T16:15:14.746+0000 I JOURNAL  [durability] Durability thread started
  2015-11-06T16:15:14.746+0000 I JOURNAL  [journal writer] Journal writer thread started
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] MongoDB starting : pid=10 port=27017 dbpath=/data/db 64-bit host=9c05d483673a
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] 
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] 
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] 
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] 
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] db version v3.0.7
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] git version: 6ce7cbe8c6b899552dadd907604559806aa2e9bd
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] build info: Linux ip-10-183-78-195 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 BOOST_LIB_VERSION=1_49
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] allocator: tcmalloc
  2015-11-06T16:15:14.747+0000 I CONTROL  [initandlisten] options: { processManagement: { fork: true }, storage: { dbPath: "/data/db" }, systemLog: { destination: "file", path: "/var/log/mongodb.log" } }
  2015-11-06T16:15:14.748+0000 I INDEX    [initandlisten] allocating new ns file /data/db/local.ns, filling with zeroes...
  2015-11-06T16:15:14.802+0000 I STORAGE  [FileAllocator] allocating new datafile /data/db/local.0, filling with zeroes...
  2015-11-06T16:15:14.802+0000 I STORAGE  [FileAllocator] creating directory /data/db/_tmp
  2015-11-06T16:15:14.804+0000 I STORAGE  [FileAllocator] done allocating datafile /data/db/local.0, size: 64MB,  took 0 secs
  2015-11-06T16:15:14.807+0000 I NETWORK  [initandlisten] waiting for connections on port 27017
  2015-11-06T16:15:14.830+0000 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:49641 #1 (1 connection now open)
  2015-11-06T16:15:14.832+0000 I INDEX    [conn1] allocating new ns file /data/db/my-db.ns, filling with zeroes...
  2015-11-06T16:15:14.897+0000 I STORAGE  [FileAllocator] allocating new datafile /data/db/my-db.0, filling with zeroes...
  2015-11-06T16:15:14.898+0000 I STORAGE  [FileAllocator] done allocating datafile /data/db/my-db.0, size: 64MB,  took 0 secs
  2015-11-06T16:15:14.904+0000 I NETWORK  [conn1] end connection 127.0.0.1:49641 (0 connections now open)
  2015-11-06T16:15:14.945+0000 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:49642 #2 (1 connection now open)
  2015-11-06T16:15:14.958+0000 I NETWORK  [conn2] end connection 127.0.0.1:49642 (0 connections now open)
  2015-11-06T16:15:14.982+0000 I CONTROL  [signalProcessingThread] got signal 15 (Terminated), will terminate after current cmd ends
  2015-11-06T16:15:14.982+0000 I CONTROL  [signalProcessingThread] now exiting
  2015-11-06T16:15:14.982+0000 I NETWORK  [signalProcessingThread] shutdown: going to close listening sockets...
  2015-11-06T16:15:14.982+0000 I NETWORK  [signalProcessingThread] closing listening socket: 6
  2015-11-06T16:15:14.982+0000 I NETWORK  [signalProcessingThread] closing listening socket: 7
  2015-11-06T16:15:14.982+0000 I NETWORK  [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock
  2015-11-06T16:15:14.982+0000 I NETWORK  [signalProcessingThread] shutdown: going to flush diaglog...
  2015-11-06T16:15:14.982+0000 I NETWORK  [signalProcessingThread] shutdown: going to close sockets...
  2015-11-06T16:15:14.982+0000 I STORAGE  [signalProcessingThread] shutdown: waiting for fs preallocator...
  2015-11-06T16:15:14.982+0000 I STORAGE  [signalProcessingThread] shutdown: final commit...
  2015-11-06T16:15:15.008+0000 I JOURNAL  [signalProcessingThread] journalCleanup...
  2015-11-06T16:15:15.008+0000 I JOURNAL  [signalProcessingThread] removeJournalFiles
  2015-11-06T16:15:15.009+0000 I JOURNAL  [signalProcessingThread] Terminating durability thread ...
  2015-11-06T16:15:15.088+0000 I JOURNAL  [journal writer] Journal writer thread stopped
  2015-11-06T16:15:15.088+0000 I JOURNAL  [durability] Durability thread stopped
  2015-11-06T16:15:15.088+0000 I STORAGE  [signalProcessingThread] shutdown: closing all files...
  2015-11-06T16:15:15.090+0000 I STORAGE  [signalProcessingThread] closeAllFiles() finished
  2015-11-06T16:15:15.090+0000 I STORAGE  [signalProcessingThread] shutdown: removing fs lock...
  2015-11-06T16:15:15.090+0000 I CONTROL  [signalProcessingThread] dbexit:  rc: 0
  </code></pre>
  
  <p>I also checked the folder /data/db content: </p>
  
  <pre><code>root@fbaf17233182:/data/db# ls -al
  total 16
  drwxr-xr-x 3 mongodb mongodb 4096 Nov  6 16:15 .
  drwxr-xr-x 4 root    root    4096 Nov  6 16:15 ..
  drwxr-xr-x 2 root    root    4096 Nov  5 18:55 scripts
  </code></pre>
  
  <p>May help: </p>
  
  <ul>
  <li><a href="https://github.com/docker-library/mongo/blob/982328582c74dd2f0a9c8c77b84006f291f974c3/3.0/Dockerfile" rel="noreferrer">Parent Dockerfile</a> </li>
  <li>Parent Dockerfile <a href="https://github.com/docker-library/mongo/blob/982328582c74dd2f0a9c8c77b84006f291f974c3/3.0/docker-entrypoint.sh" rel="noreferrer"><code>ENTRYPOINT</code></a></li>
  </ul>