Skip to content

rakeshopensource/go-mongo-microservice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

go-mongo-microservice

MongoDB setup

docker-compose.yml

version: '3'
services:
  mongodb:
    image: mongo
    container_name: catalogdb
    ports:
      - "27017:27017"
    volumes:
      - "mongodata:/data/db"
    networks:
      - network1

volumes:
   mongodata:

networks:
   network1:
$ docker-compose up

verify network

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
d9772c6b6972        bridge              bridge              local
cf3d62f44f7c        host                host                local
b90b47a74a9d        mongodb_network1    bridge              local
cc1c1ed12914        none                null                local

build golang microservice image

Dockerfile

FROM golang:1.9.2 as builder
ARG SOURCE_LOCATION=/
WORKDIR ${SOURCE_LOCATION}
RUN go get -d -v github.com/gorilla/mux \
	&& go get -d -v gopkg.in/mgo.v2/bson \
	&& go get -d -v gopkg.in/mgo.v2
COPY main.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .

FROM alpine:latest  
ARG SOURCE_LOCATION=/
RUN apk --no-cache add curl
EXPOSE 9090
WORKDIR /root/
COPY --from=builder ${SOURCE_LOCATION} .
CMD ["./app"]  

$ docker build --build-arg SOURCE_LOCATION=<GO_FILE_DIR> --no-cache -t go-mongo-microservice:latest .
$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
go-mongo-microservice   latest              51246ed02f92        29 minutes ago      13MB
mongo                   latest              43099507792a        38 hours ago        366MB
mysql                   latest              5d4d51c57ea8        38 hours ago        374MB
wordpress               latest              80a6fca6cc6a        10 days ago         407MB
golang                  latest              1c1309ff8e0d        10 days ago         779MB
ubuntu                  latest              0458a4468cbc        4 weeks ago         112MB
alpine                  latest              3fd9065eaf02        7 weeks ago         4.15MB
golang                  1.9.2               138bd936fa29        2 months ago        733MB

run docker microservice image

$ docker run --name go-mongo-microservice --link catalogdb:mongo  --net mongodb_network1 -p 9090:9090  go-mongo-microservice
$ curl -v -d '{"name":"iPhone","company":"Apple"}'  -X POST http://localhost:9090/catalogs
$ curl -v -d '{"name":"Note","company":"Samsung"}'  -X POST http://localhost:9090/catalogs
$ curl http://localhost:9090/catalogs | json_pp

[
   {
      "name" : "iPhone",
      "company" : "Apple"
   },
   {
      "company" : "Samsung",
      "name" : "Note"
   }
]

Releases

No releases published

Packages

No packages published

Languages