debugger support for cart and email service

This commit is contained in:
Hamid Asaadi 2018-10-26 13:23:00 -04:00
parent 1fe7f8dcec
commit 626b8d0f41
8 changed files with 82 additions and 52 deletions

View file

@ -1,28 +1,35 @@
FROM microsoft/dotnet:2.1-sdk-alpine as builder
FROM gcr.io/dotnet-debugger/aspnetcore:2.1 as builder
ENV d = 1
WORKDIR /app
COPY . .
RUN dotnet restore && \
dotnet build && \
dotnet publish -c release -r linux-musl-x64 -o /cartservice
dotnet publish -c debug -o /cartservice
# cartservice
FROM alpine:3.8
FROM gcr.io/dotnet-debugger/aspnetcore:2.1
# Dependencies for runtime
# busybox-extras => telnet
RUN apt-get install -q -y --no-install-recommends \
busybox \
libc6 \
libunwind-dev \
libuuid1 \
libgcc1 \
icu-devtools \
musl-dev \
wget
RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \
wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \
chmod +x /bin/grpc_health_probe
# Dependencies for runtime
# busybox-extras => telnet
RUN apk add --no-cache \
busybox-extras \
libc6-compat \
libunwind \
libuuid \
libgcc \
libstdc++ \
libintl \
icu
WORKDIR /app
COPY --from=builder /cartservice .
ENTRYPOINT ["./cartservice", "start"]
COPY ./source-context.json /usr/share/dotnet-debugger/agent
ENV STACKDRIVER_DEBUGGER_MODULE=cartservice
ENV STACKDRIVER_DEBUGGER_VERSION=1.0.0
ENTRYPOINT ["/usr/share/dotnet-debugger/start-debugger.sh", "dotnet", "cartservice.dll", "start"]

View file

@ -3,6 +3,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<DebugType>portable</DebugType>
</PropertyGroup>
<ItemGroup>

View file

@ -0,0 +1,6 @@
{
"git": {
"revisionId": "1fe7f8dcec94e4c90a2ce8c3c9652eb38152bb46",
"url": "git@github.com:hrasadi/microservices-demo.git"
}
}

View file

@ -1,45 +1,45 @@
FROM python:3-alpine as base
FROM base as builder
FROM debian:stretch as base
ENV d = 1
# gRPC and app deps
RUN apk add --update --no-cache \
gcc \
linux-headers \
make \
musl-dev \
python-dev \
g++ \
# App Deps
cairo-dev \
cairo \
openssl-dev \
gobject-introspection-dev
RUN apt-get update
RUN apt-get install -q -y --no-install-recommends \
git cmake curl \
python-dev python-setuptools python-pip \
build-essential zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl \
llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev \
libssl-dev musl-dev libgirepository1.0-dev libcairo-dev
# Python
ENV PYENV_SHA256 df9449f69918c716e688d4216eb4398d2cd6d2dcd0f7e6f56d55d19d74cc57cc
RUN curl -L https://github.com/pyenv/pyenv/archive/v1.2.6.tar.gz -o pyenv.tar.gz
RUN echo $PYENV_SHA256 pyenv.tar.gz | sha256sum -c
RUN tar zxvf pyenv.tar.gz
RUN mv pyenv-* pyenv
RUN pyenv/plugins/python-build/install.sh
RUN python-build 3.7.0 /usr/local/
RUN rm /usr/local/bin/python
# get packages
RUN pip install --upgrade pip
COPY requirements.txt .
RUN pip install -r requirements.txt
FROM base as final
# Enable unbuffered logging
ENV PYTHONUNBUFFERED=1
# Download the grpc health probe
RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \
wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \
chmod +x /bin/grpc_health_probe
# Enable unbuffered logging
ENV PYTHONUNBUFFERED=1
WORKDIR /email_server
# Grab packages from builder
COPY --from=builder /usr/local/lib/python3.7/ /usr/local/lib/python3.7/
# Need libstdc++ for grpc
RUN apk add --no-cache libstdc++
# Add the application
COPY . .
EXPOSE 8080
ENTRYPOINT [ "python", "email_server.py" ]
ENTRYPOINT [ "python3", "email_server.py" ]

View file

@ -23,6 +23,9 @@ import grpc
from jinja2 import Environment, FileSystemLoader, select_autoescape, TemplateError
from google.api_core.exceptions import GoogleAPICallError
import googleclouddebugger
import traceback
import demo_pb2
import demo_pb2_grpc
from grpc_health.v1 import health_pb2
@ -33,8 +36,6 @@ from grpc_health.v1 import health_pb2_grpc
# from opencensus.trace.exporters import stackdriver_exporter
# from opencensus.trace.exporters import print_exporter
# import googleclouddebugger
# try:
# sampler = always_on.AlwaysOnSampler()
# exporter = stackdriver_exporter.StackdriverExporter()
@ -42,14 +43,6 @@ from grpc_health.v1 import health_pb2_grpc
# except:
# tracer_interceptor = server_interceptor.OpenCensusServerInterceptor()
# try:
# googleclouddebugger.enable(
# module='emailserver',
# version='1.0.0'
# )
# except:
# pass
from logger import getJSONLogger
logger = getJSONLogger('emailservice-server')
@ -145,5 +138,15 @@ def start(dummy_mode):
if __name__ == '__main__':
try:
googleclouddebugger.enable(
module='emailserver',
version='1.0.0'
)
except:
logger.error("could not enable debugger")
logger.error(traceback.print_exc())
pass
logger.info('starting the email service in dummy mode.')
start(dummy_mode = True)

View file

@ -12,6 +12,7 @@ google-api-core==1.4.0
google-auth==1.5.1
google-cloud-core==0.28.1
google-cloud-trace==0.19.0
google-python-cloud-debugger==2.9
googleapis-common-protos==1.5.3
grpc-google-iam-v1==0.11.4
grpcio==1.12.1

View file

@ -0,0 +1,6 @@
{
"git": {
"revisionId": "1fe7f8dcec94e4c90a2ce8c3c9652eb38152bb46",
"url": "git@github.com:hrasadi/microservices-demo.git"
}
}

View file

@ -0,0 +1,6 @@
{
"git": {
"revisionId": "1fe7f8dcec94e4c90a2ce8c3c9652eb38152bb46",
"url": "git@github.com:hrasadi/microservices-demo.git"
}
}