Насколько я понимаю, новые контейнеры не должны сохранять данные после их смерти.
Сейчас у меня есть два файла Docker.Один для моего приложения, а другой для заполнения базы данных.
Это структура моего проекта
/
package.json
Dockerfile
docker-compose.yml
mongo-seeding/
Dockerfile
seedDatabase.mjs
Вот так выглядит мой seedDatabase
import mongodb from "mongodb";
import data from "./dummyData";
// Connection URL
const url = "mongodb://mongo:27017/poc";
async function mongoSeeder() {
try {
// first check to see if the database exists
const client = await mongodb.MongoClient.connect(url);
const db = client.db("poc");
const questionCollection = await db.createCollection("question");
const answerCollection = await db.createCollection("answer");
await questionCollection.insertMany(data.questions);
await answerCollection.insertMany(data.answers);
} catch (e) {
console.log(e);
}
}
mongoSeeder();
Это мой Dockerfile
для заполнения базы данныхвыглядит так:
FROM node:10
WORKDIR /usr/src/app
COPY package*.json ./
COPY mongo-seeding mongo-seeding
RUN yarn add mongodb uuid faker
CMD ["yarn", "seed"]
Вот так выглядит другой Dockerfile
FROM node:10
WORKDIR /usr/src/app
COPY package*.json ./
RUN yarn install
RUN yarn add mongodb uuid faker
RUN yarn global add nodemon babel-cli babel-preset-env
COPY . .
EXPOSE 3000
CMD ["yarn", "dev-deploy"]
Так выглядит мой docker-compose.yml
version: "3"
services:
mongo:
container_name: mongo
image: mongo
ports:
- "4040:27017"
expose:
- "4040"
app:
container_name: ingovguru
build: .
ports:
- "3000:3000"
depends_on:
- mongo
links:
- mongo
expose:
- "3000"
seed:
container_name: seed
build:
context: .
dockerfile: ./mongo-seeding/Dockerfile
links:
- mongo
depends_on:
- mongo
- app
Изначально язаполнение базы данных 1000 вопросами и 200 ответами.
Обратите внимание, что я не использую никакие тома, поэтому ничего не должно сохраняться.
Я запускаю
docker-compose build docker-составить вверх
Я прыгаю в контейнер монго и вижу, что у меня 1000 вопросов и 100 ответов.
Я потом Ctrl-C
и перезапущу.
Теперь у меня 2000 вопросов и 100 ответов.
Почему это происходит?