Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Observability #86

Merged
merged 2 commits into from
Mar 22, 2024
Merged

Observability #86

merged 2 commits into from
Mar 22, 2024

Conversation

OpsGen
Copy link
Contributor

@OpsGen OpsGen commented Mar 22, 2024

Description

  • Introduced a Dockerfile to create an observability environment for the project using Streamlit, which includes the setup of a virtual environment and installation of dependencies.
  • Updated the .dockerignore file to improve the Docker build context by excluding unnecessary files and directories, such as bytecode, logs, caches, and environment directories, which optimizes the build process and reduces the image size.

Changes walkthrough

Relevant files
Configuration changes
.dockerignore
Update .dockerignore to Exclude Unnecessary Files and Directories

.dockerignore

  • Added numerous entries to exclude common files and directories that
    are not needed in Docker images, such as Python bytecode, logs,
    caches, and virtual environments.
  • Included specific exclusions for project-related directories like
    openduck-py/models, openduck-py/logs, and database files.
  • Excluded macOS specific files such as .DS_Store.
  • +172/-1 
    Enhancement
    Dockerfile.observability
    Add Dockerfile for Streamlit Observability Environment                 

    Dockerfile.observability

  • Created a new Dockerfile for setting up an observability environment
    with Streamlit.
  • Defined a multi-stage build process that includes installing necessary
    packages and setting up a non-root user.
  • Added a custom entrypoint script to run Streamlit and handle graceful
    shutdown.
  • Exposed port 8501 for Streamlit access.
  • +66/-0   

    🔍 Infra Scan Results:
    Failed Dockerfile Checks
    Check NameFile PathLines
    Ensure that HEALTHCHECK instructions have been added to container imagesDockerfile.observability1-66
    💡 Usage Guide

    Checking Your Pull Request

    Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

    Talking to CodeAnt AI

    Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

    @codeant-ai ask: Your question here
    

    This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

    Check Your Repository Health

    To analyze the health of your code repository, visit our dashboard at app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

    Copy link

    vercel bot commented Mar 22, 2024

    The latest updates on your projects. Learn more about Vercel for Git ↗︎

    Name Status Preview Updated (UTC)
    openduck ✅ Ready (Inspect) Visit Preview Mar 22, 2024 8:19am

    @OpsGen OpsGen merged commit d40d83a into staging Mar 22, 2024
    5 checks passed
    Comment on lines +1 to +66
    FROM python:3.8-slim

    RUN groupadd --gid 1000 openduck \
    && useradd --uid 1000 --gid 1000 -ms /bin/bash openduck

    RUN apt-get update && apt-get install -y \
    build-essential \
    software-properties-common \
    git

    RUN pip3 install --no-cache-dir --upgrade \
    pip \
    virtualenv

    USER openduck
    WORKDIR /home/openduck

    COPY ./openduck-py/ /home/openduck/streamlit

    USER root

    RUN cat <<EOF > /home/openduck/streamlit/observability.txt
    streamlit
    pandas
    sqlalchemy
    aiosqlite
    alembic
    EOF

    RUN cat <<EOF > /home/openduck/run.sh
    #!/bin/bash

    APP_PID=
    stopRunningProcess() {
    if test ! "\${APP_PID}" = '' && ps -p \${APP_PID} > /dev/null ; then
    echo "Stopping \${COMMAND_PATH} which is running with process ID \${APP_PID}"
    kill -TERM \${APP_PID}
    echo "Waiting for \${COMMAND_PATH} to process SIGTERM signal"
    wait \${APP_PID}
    echo "All processes have stopped running"
    else
    echo "\${COMMAND_PATH} was not started when the signal was sent or it has already been stopped"
    fi
    }
    trap stopRunningProcess EXIT TERM
    source \${VIRTUAL_ENV}/bin/activate

    cd \${HOME}/streamlit/
    alembic upgrade head

    streamlit run \${HOME}/streamlit/observability.py &
    APP_PID=\${!}

    wait \${APP_PID}
    EOF

    RUN chmod +x /home/openduck/run.sh

    USER openduck

    ENV VIRTUAL_ENV=/home/openduck/venv
    RUN virtualenv ${VIRTUAL_ENV}
    RUN . ${VIRTUAL_ENV}/bin/activate && pip install -r streamlit/observability.txt

    EXPOSE 8501
    ENTRYPOINT ["/home/openduck/run.sh"]
    Copy link
    Contributor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Ensure that HEALTHCHECK instructions have been added to container images

    • Having HEALTHCHECK instructions in Docker container images allows automated systems to assess the health status of running applications, enabling quick detection and resolution of operational issues.
    • The absence of a HEALTHCHECK instruction can make it difficult to identify when a service becomes unresponsive, which can lead to prolonged downtime and negative impacts on end users.

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    1 participant