This is an automated email from the ASF dual-hosted git repository.

rusackas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new f1a6b2f852 docs(drivers): refresh guide on adding a db driver in 
docker (#26038)
f1a6b2f852 is described below

commit f1a6b2f852eb879e69c7a93803cf0dd2ed58ce76
Author: Sam Firke <[email protected]>
AuthorDate: Wed Nov 29 15:05:03 2023 -0500

    docs(drivers): refresh guide on adding a db driver in docker (#26038)
---
 docs/docs/databases/docker-add-drivers.mdx | 72 +++++++++---------------------
 1 file changed, 21 insertions(+), 51 deletions(-)

diff --git a/docs/docs/databases/docker-add-drivers.mdx 
b/docs/docs/databases/docker-add-drivers.mdx
index 03a971a979..cb7c550c07 100644
--- a/docs/docs/databases/docker-add-drivers.mdx
+++ b/docs/docs/databases/docker-add-drivers.mdx
@@ -7,87 +7,57 @@ version: 1
 
 ## Adding New Database Drivers in Docker
 
-Superset requires a Python database driver to be installed for each additional 
type of database you
-want to connect to. When setting up Superset locally via `docker compose`, the 
drivers and packages
-contained in
-[requirements.txt](https://github.com/apache/superset/blob/master/requirements.txt)
 and
-[requirements-dev.txt](https://github.com/apache/superset/blob/master/requirements-dev.txt)
-will be installed automatically.
+Superset requires a Python database driver to be installed for each additional 
type of database you want to connect to.
 
-In this section, we'll walk through how to install the MySQL connector 
library. The connector
-library installation process is the same for all additional libraries and 
we'll end this section
-with the recommended connector library for each database.
+In this example, we'll walk through how to install the MySQL connector 
library. The connector library installation process is the same for all 
additional libraries.
 
 ### 1. Determine the driver you need
 
-To figure out how to install the [database 
driver](/docs/databases/installing-database-drivers) of your choice.
+Consult the [list of database 
drivers](/docs/databases/installing-database-drivers) and find the PyPI package 
needed to connect to your database. In this example, we're connecting to a 
MySQL database, so we'll need the `mysqlclient` connector library.
 
-In the example, we'll walk through the process of installing a MySQL driver in 
Superset.
+### 2. Install the driver in the container
 
-### 2. Install MySQL Driver
+We need to get the `mysqlclient` library installed into the Superset docker 
container (it doesn't matter if it's installed on the host machine). We could 
enter the running container with `docker exec -it <container_name> bash` and 
run `pip install mysqlclient` there, but that wouldn't persist permanently.
 
-As we are currently running inside of a Docker container via `docker compose`, 
we cannot simply run
-`pip install mysqlclient` on our local shell and expect the drivers to be 
installed within the
-Docker containers for superset.
+To address this, the Superset `docker compose` deployment uses the convention 
of a `requirements-local.txt` file. All packages listed in this file will be 
installed into the container from PyPI at runtime. This file will be ignored by 
Git for the purposes of local development.
 
-In order to address this, the Superset `docker compose` setup comes with a 
mechanism for you to
-install packages locally, which will be ignored by Git for the purposes of 
local development. Please
-follow these steps:
-
-Create `requirements-local.txt`
+Create the file `requirements-local.txt` in a subdirectory called `docker` 
that exists in the directory with your `docker-compose.yml` or 
`docker-compose-non-dev.yml` file.
 
 ```
-# From the repo root...
+# Run from the repo root:
 touch ./docker/requirements-local.txt
 ```
 
-Add the driver selected in step above:
+Add the driver identified in step above.  You can use a text editor or do it 
from the command line like:
 
 ```
 echo "mysqlclient" >> ./docker/requirements-local.txt
 ```
 
-Rebuild your local image with the new driver baked in:
+**If you are running a stock (non-customized) Superset image**, you are done.  
Launch Superset with `docker compose -f docker-compose-non-dev.yml up` and the 
driver should be present.
 
-```
-docker compose build --force-rm
-```
+You can check its presence by entering the running container with `docker exec 
-it <container_name> bash` and running `pip freeze`.  The PyPI package should 
be present in the printed list.
 
-After the rebuild of the Docker images is complete (which may take a few 
minutes) you can relaunch using the following command:
+**If you're running a customized docker image**, rebuild your local image with 
the new driver baked in:
 
 ```
-docker compose up
+docker compose build --force-rm
 ```
 
-The other option is to start Superset via Docker Compose is using the recipe 
in `docker-compose-non-dev.yml`, which will use pre-built frontend assets and 
skip the building of front-end assets:
-
-```
-docker compose -f docker-compose-non-dev.yml pull
-docker compose -f docker-compose-non-dev.yml up
-```
+After the rebuild of the Docker images is complete, relaunch Superset by 
running `docker compose up`.
 
 ### 3. Connect to MySQL
 
-Now that you've got a MySQL driver installed locally, you should be able to 
test it out.
-
-We can now create a Datasource in Superset that can be used to connect to a 
MySQL instance. Assuming
-your MySQL instance is running locally and can be accessed via localhost, use 
the following
-connection string in “SQL Alchemy URI”, by going to Sources > Databases > + 
icon (to add a new
-datasource) in Superset.
+Now that you've got a MySQL driver installed in your container, you should be 
able to connect to your database via the Superset web UI.
 
-For Docker running in Linux:
+As an admin user, go to Settings -> Data: Database Connections and click the 
+DATABASE button. From there, follow the steps on the [Using Database 
Connection UI 
page](https://superset.apache.org/docs/databases/db-connection-ui).
 
-```
-mysql://mysqluser:mysqluserpassword@localhost/example?charset=utf8
-```
+Consult the page for your specific database type in the Superset documentation 
to determine the connection string and any other parameters you need to input.  
For instance, on the [MySQL 
page](https://superset.apache.org/docs/databases/mysql), we see that the 
connection string to a local MySQL database differs depending on whether the 
setup is running on Linux or Mac.
 
-For Docker running in OSX:
+Click the “Test Connection” button, which should result in a popup message 
saying, "Connection looks good!".
 
-```
-mysql://mysqluser:[email protected]/example?charset=utf8
-```
+### 4. Troubleshooting
 
-Then click “Test Connection”, which should give you an “OK” message. If not, 
please look at your
-terminal for error messages, and reach out for help.
+If the test fails, review your docker logs for error messages.  Superset uses 
SQLAlchemy to connect to databases; to troubleshoot the connection string for 
your database, you might start Python in the Superset application container or 
host environment and try to connect directly to the desired database and fetch 
data. This eliminates Superset for the purposes of isolating the problem.
 
-You can repeat this process for every database you want superset to be able to 
connect to.
+Repeat this process for each different type of database you want Superset to 
be able to connect to.

Reply via email to