diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index ec000d679f3ca6122cf364216ea4834742190304..50907fed986d0308c21502ce804a4936ee4a683c 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -64,8 +64,6 @@ jobs:
       - uses: actions/checkout@v2
       - name: Docker Build
         run: docker-compose build
-      - name: Docker Compose Start
-        run: docker-compose up -d
       - uses: actions/setup-go@v2
         with:
           go-version: ${{ env.GOVERSION }}
diff --git a/cmd/server/app/serve.go b/cmd/server/app/serve.go
index a5afa99c84f0b06dc66a61d9f8dda41f20717afa..7f086cd729e918eb73a9838a7b0af63627d5d997 100644
--- a/cmd/server/app/serve.go
+++ b/cmd/server/app/serve.go
@@ -18,6 +18,7 @@ package app
 
 import (
 	"github.com/go-openapi/loads"
+	"github.com/projectrekor/rekor/pkg/api"
 	"github.com/projectrekor/rekor/pkg/generated/restapi/operations"
 	"github.com/projectrekor/rekor/pkg/log"
 	"github.com/projectrekor/rekor/pkg/types/rekord"
@@ -58,6 +59,8 @@ var serveCmd = &cobra.Command{
 
 		server.Host = viper.GetString("rekor_server.address")
 		server.Port = int(viper.GetUint("rekor_server.port"))
+
+		api.ConfigureAPI()
 		server.ConfigureAPI()
 		if err := server.Serve(); err != nil {
 			log.Logger.Fatal(err)
diff --git a/docker-compose.yml b/docker-compose.yml
index 6f752530c7cef889c6faa067a1caaa60dd53d6f3..919db78f84e74cba7faa502ab5b8edac8fa125f4 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,7 +1,7 @@
 version: '3.1'
 services:
   mysql:
-    image: gcr.io/trillian-opensource-ci/db_server
+    image: gcr.io/trillian-opensource-ci/db_server:3c8193ebb2d7fedb44d18e9c810d0d2e4dbb7e4d
     environment:
       - MYSQL_ROOT_PASSWORD=zaphod
       - MYSQL_DATABASE=test
diff --git a/pkg/api/api.go b/pkg/api/api.go
index 2cdd5c37a916e7d7c01cd312b38353133c4f82cd..7e70f51be86de343cbfa1644217682ee22bd06bc 100644
--- a/pkg/api/api.go
+++ b/pkg/api/api.go
@@ -81,21 +81,20 @@ func NewAPI() (*API, error) {
 	}, nil
 }
 
-type ctxKeyRekorAPI int
-
-const rekorAPILookupKey ctxKeyRekorAPI = 0
-
-func AddAPIToContext(ctx context.Context, api *API) context.Context {
-	return context.WithValue(ctx, rekorAPILookupKey, api)
-}
+var (
+	api *API
+)
 
-func NewTrillianClient(ctx context.Context) *TrillianClient {
-	api := ctx.Value(rekorAPILookupKey).(*API)
-	if api == nil {
-		return nil
+func ConfigureAPI() {
+	var err error
+	api, err = NewAPI()
+	if err != nil {
+		log.Logger.Panic(err)
 	}
+}
 
-	return &TrillianClient{
+func NewTrillianClient(ctx context.Context) TrillianClient {
+	return TrillianClient{
 		client:  api.logClient,
 		logID:   api.logID,
 		context: ctx,
diff --git a/pkg/api/entries.go b/pkg/api/entries.go
index a65657b3fc5066607df278033bfe49734ccf670c..72dbc8da9bfce457facc8071fb863116e0472e79 100644
--- a/pkg/api/entries.go
+++ b/pkg/api/entries.go
@@ -43,9 +43,6 @@ import (
 
 func GetLogEntryByIndexHandler(params entries.GetLogEntryByIndexParams) middleware.Responder {
 	tc := NewTrillianClient(params.HTTPRequest.Context())
-	if tc == nil {
-		return handleRekorAPIError(params, http.StatusInternalServerError, errors.New("unable to get client from request context"), trillianCommunicationError)
-	}
 
 	resp := tc.getLeafByIndex(params.LogIndex)
 	switch resp.status {
@@ -86,9 +83,6 @@ func CreateLogEntryHandler(params entries.CreateLogEntryParams) middleware.Respo
 	}
 
 	tc := NewTrillianClient(httpReq.Context())
-	if tc == nil {
-		return handleRekorAPIError(params, http.StatusInternalServerError, errors.New("unable to get client from request context"), trillianCommunicationError)
-	}
 
 	resp := tc.addLeaf(leaf)
 	switch resp.status {
@@ -119,9 +113,6 @@ func GetLogEntryByUUIDHandler(params entries.GetLogEntryByUUIDParams) middleware
 	hashes := [][]byte{hashValue}
 
 	tc := NewTrillianClient(params.HTTPRequest.Context())
-	if tc == nil {
-		return handleRekorAPIError(params, http.StatusInternalServerError, errors.New("unable to get client from request context"), trillianCommunicationError)
-	}
 
 	resp := tc.getLeafByHash(hashes) // TODO: if this API is deprecated, we need to ask for inclusion proof and then use index in proof result to get leaf
 	switch resp.status {
@@ -154,9 +145,6 @@ func GetLogEntryByUUIDHandler(params entries.GetLogEntryByUUIDParams) middleware
 func GetLogEntryProofHandler(params entries.GetLogEntryProofParams) middleware.Responder {
 	hashValue, _ := hex.DecodeString(params.EntryUUID)
 	tc := NewTrillianClient(params.HTTPRequest.Context())
-	if tc == nil {
-		return handleRekorAPIError(params, http.StatusInternalServerError, errors.New("unable to get client from request context"), trillianCommunicationError)
-	}
 
 	resp := tc.getProofByHash(hashValue)
 	switch resp.status {
@@ -202,9 +190,6 @@ func SearchLogQueryHandler(params entries.SearchLogQueryParams) middleware.Respo
 	httpReqCtx := params.HTTPRequest.Context()
 	resultPayload := []models.LogEntry{}
 	tc := NewTrillianClient(httpReqCtx)
-	if tc == nil {
-		return handleRekorAPIError(params, http.StatusInternalServerError, errors.New("unable to get client from request context"), trillianCommunicationError)
-	}
 
 	//TODO: parallelize this into different goroutines to speed up search
 	searchHashes := [][]byte{}
diff --git a/pkg/api/tlog.go b/pkg/api/tlog.go
index 142e1abdbf94a22fe3a21beee42b7b6cdef85e73..9e735660d67d6cca4883e2090e82c109eac44f02 100644
--- a/pkg/api/tlog.go
+++ b/pkg/api/tlog.go
@@ -35,9 +35,6 @@ import (
 
 func GetLogInfoHandler(params tlog.GetLogInfoParams) middleware.Responder {
 	tc := NewTrillianClient(params.HTTPRequest.Context())
-	if tc == nil {
-		return handleRekorAPIError(params, http.StatusInternalServerError, errors.New("unable to get client from request context"), trillianCommunicationError)
-	}
 
 	resp := tc.getLatest(0)
 	if resp.status != codes.OK {
@@ -71,9 +68,6 @@ func GetLogProofHandler(params tlog.GetLogProofParams) middleware.Responder {
 		return handleRekorAPIError(params, http.StatusBadRequest, nil, fmt.Sprintf(firstSizeLessThanLastSize, *params.FirstSize, params.LastSize))
 	}
 	tc := NewTrillianClient(params.HTTPRequest.Context())
-	if tc == nil {
-		return handleRekorAPIError(params, http.StatusInternalServerError, errors.New("unable to get client from request context"), trillianCommunicationError)
-	}
 
 	resp := tc.getConsistencyProof(*params.FirstSize, params.LastSize)
 	if resp.status != codes.OK {
diff --git a/pkg/generated/restapi/configure_rekor_server.go b/pkg/generated/restapi/configure_rekor_server.go
index 11eb0f96ed2de5daec5b1739798bc0ede7784000..0429556dffd186dbb803b03ef8b6b419f3123987 100644
--- a/pkg/generated/restapi/configure_rekor_server.go
+++ b/pkg/generated/restapi/configure_rekor_server.go
@@ -113,8 +113,6 @@ func setupGlobalMiddleware(handler http.Handler) http.Handler {
 	returnHandler = middleware.Logger(returnHandler)
 	returnHandler = middleware.Heartbeat("/ping")(returnHandler)
 
-	// add the Trillian API object in context for all endpoints
-	returnHandler = addTrillianAPI(handler)
 	return middleware.RequestID(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		ctx := r.Context()
 		r = r.WithContext(log.WithRequestID(ctx, middleware.GetReqID(ctx)))
@@ -138,17 +136,6 @@ func cacheForever(handler http.Handler) http.Handler {
 	})
 }
 
-func addTrillianAPI(handler http.Handler) http.Handler {
-	api, err := pkgapi.NewAPI()
-	if err != nil {
-		log.Logger.Panic(err)
-	}
-	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		apiCtx := pkgapi.AddAPIToContext(r.Context(), api)
-		handler.ServeHTTP(w, r.WithContext(apiCtx))
-	})
-}
-
 func logAndServeError(w http.ResponseWriter, r *http.Request, err error) {
 	log.RequestIDLogger(r).Error(err)
 	requestFields := map[string]interface{}{}
diff --git a/tests/e2e-test.sh b/tests/e2e-test.sh
index 443b63af27268b2eacaf0eadede8a6a8a4ef5418..c0889420e79a686bbffa616d763bac402f47bad0 100755
--- a/tests/e2e-test.sh
+++ b/tests/e2e-test.sh
@@ -2,8 +2,10 @@
 set -ex
 testdir=$(dirname "$0")
 
+docker-compose up -d
+
 # Node
 nodedir=${testdir}/node
 go run ./cmd/cli/ upload \
     --artifact $(< ${nodedir}/url) --sha $(< ${nodedir}/sha) \
-    --signature=${nodedir}/sig  --public-key=${nodedir}/key
+    --signature=${nodedir}/sig  --public-key=${nodedir}/key
\ No newline at end of file