Crearea unui replicaset Mongo într-un loc de muncă CircleCI

voturi
1

Am încercat să ruleze teste de integrare în CircleCI pe cod care face uz de tranzacții MongoDB. Primesc în prezent, următoarea eroare:

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

Există o modalitate de a iniția o replicaset înainte de a rula testele?

Am încercat , folosind docker execpentru a rula comenzi de pe container fără nici un succes.

Are cineva a reușit să facă acest lucru înainte?

În prezent, fișierul meu de configurare circleci arata ca acest lucru:

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

      - run: go test ./... -mod vendor -v -race -tags integration
Întrebat 09/10/2019 la 12:55
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

În primul rând, aveți nevoie pentru a inițializa mongod ca un set de replici. Docker: Secțiunea are o etichetă de comandă care poate fi rulat la pornire

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

acum containerul Mongo va porni automat ca replSet. Cu toate acestea nu mai sunt de buruienile încă. Va trebui să rulați rs.Initiate (), și că trebuie să se execute în afara containerului Mongo (deoarece se execută serverul mongod).

De fiecare dată când utilizați runse referă la primul container, care în acest caz este containerul golang. Ai nevoie să instalați rs.initiate în container și apoi executați cli-Mongo ()

În cazul meu, am fost difuzate un container docher alpin și rezolvat-o cu acest cod

  - 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()"

Cu toate acestea cred că cercul: containere golang se execută în afara de Debian. Potrivit blog - ul se pare că puteți rula

  - 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()"
Publicat 12/10/2019 la 18:05
sursa de către utilizator

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