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

Add documentation on how you can install db client on code-server #379

Merged
merged 1 commit into from
Jan 2, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
166 changes: 166 additions & 0 deletions docs/Incorporate-database-cients-on-code-server.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
# Incorporate standard database clients on code server (vs code)

## Introduction

In the field of Database Management Systems effective interaction is crucial for developers. Incorporating standard database clients directly into your VS Code environment can streamline your workflow, offering a seamless interface for managing databases. This tutorial will walk you through the process of incorporating different Database Management System clients into Code Server, whether through built-in extensions within VS Code or by creating your own custom image.

## 1. Through Extensions

### Installation Guide

1. Open the code server workbench and navigate to the Extensions view.

2. Search for the desired extension using the provided recommended links.

3. Click "Install" to add the extension to your VS Code environment.

### Recommended extensions list

**MongoDB for VS Code**

MongoDB for VS Code empowers you to connect to MongoDB and Atlas directly from your VS Code environment. Explore databases and collections, inspect schemas, and prototype queries and aggregations effortlessly using the integrated playgrounds.

[Link to Extension](https://marketplace.visualstudio.com/items?itemName=mongodb.mongodb-vscode)

**MySQL Shell for VS Code**

This extension provides a robust MySQL Shell for VS Code, enhancing your capability to manage MySQL databases seamlessly within the VS Code environment.

[Link to Extension](https://marketplace.visualstudio.com/items?itemName=Oracle.mysql-shell-for-vs-code)

**SQL Server (MSSQL)**

Connect to SQL Server effortlessly with this extension, enabling you to perform database tasks directly from your VS Code workspace.

[Link to Extension](https://marketplace.visualstudio.com/items?itemName=ms-mssql.mssql)

**PostgreSQL**

This extension facilitates direct interaction with PostgreSQL databases, allowing you to navigate, query, and manage your PostgreSQL instances efficiently.

[Link to Extension](https://marketplace.visualstudio.com/items?itemName=ms-ossdata.vscode-postgresql)

**SQLTools**

SQLTools simplifies database connections, supporting a wide array of commonly used databases. This extension enhances data management and query execution, making it an invaluable tool for developers.

[Link to Extension](https://marketplace.visualstudio.com/items?itemName=mtxr.sqltools)

**Database Client**

This versatile extension serves as a database manager for MySQL/MariaDB, PostgreSQL, SQLite, Redis, and ElasticSearch. It provides a unified interface for managing diverse databases within the VS Code environment.

[Link to Extension](https://marketplace.visualstudio.com/items?itemName=cweijan.vscode-database-client2)

# 2. Through Custom Image

Custom notebook images are a powerful tool when working with containerized environments, especially in scenarios where you need specific libraries, OS packages, or applications that are not readily available in base images. This tutorial will guide you through the process of creating a custom notebook image with Database Management System (DBMS) clients using Dockerfile.

## Prerequisites

Before you begin, make sure you have Docker installed on your system.

**Step 1: Clone the Repository**

Start by cloning the Open Data Hub notebooks repository:

```git clone [email protected]:opendatahub-io/notebooks.git```

**Step 2: Create a New Dockerfile**

Navigate to the codeserver folder and create a new folder for your custom image. For example, let's name it ubi9-python-3.9-db-clients. Inside this folder, create a Dockerfile with the following instructions:

```
# The base image auto assigned by the make recipe from the next step, in this case is the code-server notebook.
ARG BASE_IMAGE
FROM ${BASE_IMAGE}

WORKDIR /opt/app-root/bin

# Install OS packages as root
USER root

# Install necessary OS packages
RUN dnf install -y unixODBC postgresql

# Install MongoDB Client
COPY mongodb-org-6.0.repo-x86_64 /etc/yum.repos.d/mongodb-org-6.0.repo

RUN dnf install -y mongocli

# Install MSSQL Client
COPY mssql-2022.repo-x86_64 /etc/yum.repos.d/mssql-2022.repo

RUN ACCEPT_EULA=Y dnf install -y mssql-tools18 unixODBC-devel

ENV PATH="$PATH:/opt/mssql-tools18/bin"

# Switch back to default user
USER 1001

WORKDIR /opt/app-root/src
```

**Step 3: Add RPM Files**

Create two RPM files, mongodb-org-6.0.repo-x86_64 and mssql-2022.repo-x86_64, in the folder you created earlier. The content for these files is provided in the tutorial.

Filename: mongodb-org-6.0.repo-x86_64

```
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
```

Filename: mssql-2022.repo-x86_64

```
[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/rhel/9.0/prod/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
```

**Step 4: Build and Push the Image**

To streamline the build and push process, update the Makefile with a new recipe:

```
.PHONY: codeserver-ubi9-python-3.9-db-clients
codeserver-ubi9-python-3.9-db-clients: codeserver-ubi9-python-3.9
$(call image,$@,codeserver/ubi9-python-3.9-db-clients,$<)
```

Run the following command to build and push the image:

```
$ make codeserver-ubi9-python-3.9-db-clients -e IMAGE_REGISTRY=quay.io/${YOUR_USERNAME}/workbench-images
```

Note: Replace `${YOUR_USERNAME}` with your actual username, and the registry can be any valid registry, not just quay.io.

**Step 5: Import Custom Image into ODH/RHOAI**

After pushing the custom image, import it into Red Hat OpenAI through the admin panel:

Navigate to `Settings -> Notebooks Image Settings -> Import New Image`.

**Step 6: Use Custom Image in a Data Science Project**

Create or open a Data Science Project, create a new workbench, and select the custom image from the Image Selection dropdown.

**Step 7: Verify Database Clients Installation**

Open a new terminal inside the code server and run the following command to ensure successful installation of database clients:

`$ yum list installed | grep -E 'mssql|mongo|postgresql'`

If everything is set up correctly, you should see a list of installed packages related to MongoDB, MSSQL, and PostgreSQL.

Here you may find an example: [https://github.com/atheo89/notebooks/tree/add-db-clients-example/codeserver/ubi9-python-3.9-plus](https://github.com/atheo89/notebooks/tree/add-db-clients-example/codeserver/ubi9-python-3.9-plus)
Loading