Opprette en Mongo replicaset i en CircleCI jobb

stemmer
1

Jeg prøver å kjøre integrasjonstestene i CircleCI på kode som gjør bruk av MongoDB transaksjoner. Jeg er for tiden får følgende feilmelding:

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

Er det en måte å starte en replicaset før du kjører testene?

Jeg har prøvd å bruke docker exectil å kjøre kommandoer på beholderen uten å lykkes.

Har noen klart å gjøre dette før?

Tiden min circleci config fil ser slik ut:

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

      - run: go test ./... -mod vendor -v -race -tags integration
Publisert på 09/10/2019 klokken 12:55
kilden bruker
På andre språk...                            


1 svar

stemmer
0

først av, må du initial mongod som et replikasett. Den Docker: del tar en kommando kode som kan kjøres ved oppstart

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

nå mongo beholderen vil automatisk starte opp som en replSet. Men du er ikke ute av ugress ennå. Du må fremdeles kjøre rs.Initiate (), og som må kjøres utenfor mongo container (siden det kjører mongod server).

Når du bruker runden forholder seg til den første beholder, som i dette tilfellet er det golang container. Du må installere den mongo-CLI i at beholderen og kjør rs.initiate ()

I mitt tilfelle var jeg kjører en Alpine Docker beholder og løst det med denne koden

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

Men jeg tror sirkelen: golang beholdere kjører ut av Debian. Ifølge denne bloggen ser ut som du kan kjøre

  - 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()"
Svarte 12/10/2019 kl. 18:05
kilden bruker

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