Создание replicaset Монго в работе CircleCI

голоса
1

Я пытаюсь запустить тесты интеграции в CircleCI на коде, который использует MongoDB сделок. В настоящее время я получаю следующее сообщение об ошибке:

(IllegalOperation) Transaction numbers are only allowed on a replica set member or mongos

Есть ли способ, чтобы начать replicaset перед выполнением тестов?

Я попытался с помощью docker execвыполнения команд на контейнер без какого - либо успеха.

Кто-нибудь удалось сделать это раньше?

В настоящее время мой circleci конфигурационный файл выглядит следующим образом:

 integration:
    docker:
      - image: circleci/golang:1.13
      - image: circleci/mongo:3
    steps:
      - attach_workspace:
          at: .

      - run: go test ./... -mod vendor -v -race -tags integration
Задан 09/10/2019 в 12:55
источник пользователем
На других языках...                            


1 ответов

голоса
0

Во-первых, вам необходимо инициализировать mongod в виде набора реплик. Докер: секция принимает команду тег, который может быть запущен при запуске

- image: circleci/mongo:4.0
  command: [--replSet,rs0]

Теперь контейнер Монго автоматически запустится как replSet. Однако вы не из сорняков еще. Вам все еще нужно запустить rs.Initiate (), и которые должны выполняться вне контейнера Монго (так как он работает на сервере mongod).

Всякий раз , когда вы используете runэто относится к первому контейнеру, который в данном случае является golang контейнером. Вы должны установить Монго-Cli в этом контейнере , а затем запустить rs.initiate ()

В моем случае, я бегу в Докер контейнер Alpine и решил его с этим кодом

  - run:
    name: "Initialize Replica Set"
    command: |
      echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/main' >> /etc/apk/repositories
      echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/community' >> /etc/apk/repositories
      apk update
      apk add mongodb=3.4.4-r0
      mongo mongodb://localhost:27017 --eval "rs.initiate()"

Однако я думаю , что круг: golang контейнеры стекания Debian. Согласно этому блогу , похоже , вы можете запустить

  - run:
    name: "Initialize Replica Set"
    command: |
      echo "deb http://repo.mongodb.org/apt/debian "$(lsb_release -sc)"/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb.list
      sudo apt-get update
      sudo apt-get install mongodb-org
      mongo mongodb://localhost:27017 --eval "rs.initiate()"
Ответил 12/10/2019 в 18:05
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more