GitHub user dosubot[bot] added a comment to the discussion: Production 
deployment issue in

<!-- Answer -->
You can and should include all drivers—PostgreSQL (psycopg2-binary), Redis 
(redis), and MSSQL (pyodbc + msodbcsql)—in a single Dockerfile for your 
Superset production image. This is the recommended pattern for Kubernetes/AKS 
and avoids runtime install issues 
[source](https://github.com/apache/superset/blob/057218d87ff3f2c8d2eb4a89d31a2b50e8a5c606/docs/docs/configuration/databases.mdx).

Here’s a sample Dockerfile that covers all three:

```dockerfile
FROM apache/superset:4.1.2

USER root

# Install system dependencies for PostgreSQL and MSSQL
RUN apt-get update && \
    apt-get install -y build-essential libpq-dev unixodbc-dev curl gnupg && \
    # Add Microsoft repo for ODBC Driver 18
    curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
    curl https://packages.microsoft.com/config/debian/12/prod.list > 
/etc/apt/sources.list.d/mssql-release.list && \
    apt-get update && \
    ACCEPT_EULA=Y apt-get install -y msodbcsql18 && \
    pip install --no-cache-dir redis psycopg2-binary pyodbc && \
    apt-get clean

USER superset
```

- This installs all required system and Python packages in one image.
- No need for separate images or Dockerfiles.
- After building and pushing, set your Helm values.yaml to use this image and 
tag.
- You can verify the drivers are present with `pip freeze` and `python -c 
'import pyodbc, psycopg2, redis'` inside the container.

If you need to support other databases, just add their system and Python 
drivers in the same RUN block. For the MSSQL connection string, use the 
`odbc_connect` pattern and URL-encode the full ODBC string as shown in the 
[docs](https://github.com/apache/superset/blob/057218d87ff3f2c8d2eb4a89d31a2b50e8a5c606/docs/docs/configuration/databases.mdx).

Let me know if you need a full example for values.yaml or run into any build 
errors!


<!-- Dosu Comment Footer -->
*To reply, just mention [@dosu](https://go.dosu.dev/dosubot).*

---
<sup>How did I do? 
[Good](https://app.dosu.dev/response-feedback/1a7b0768-9030-4d61-8d1e-1840c5bfdd49?feedback_type=great_response)
 | 
[Irrelevant](https://app.dosu.dev/response-feedback/1a7b0768-9030-4d61-8d1e-1840c5bfdd49?feedback_type=irrelevant_answer)
 | 
[Incorrect](https://app.dosu.dev/response-feedback/1a7b0768-9030-4d61-8d1e-1840c5bfdd49?feedback_type=incorrect_sources)
 | 
[Verbose](https://app.dosu.dev/response-feedback/1a7b0768-9030-4d61-8d1e-1840c5bfdd49?feedback_type=too_verbose)
 | 
[Hallucination](https://app.dosu.dev/response-feedback/1a7b0768-9030-4d61-8d1e-1840c5bfdd49?feedback_type=hallucination)
 | [Report 
🐛](https://app.dosu.dev/response-feedback/1a7b0768-9030-4d61-8d1e-1840c5bfdd49?feedback_type=bug_report)
 | 
[Other](https://app.dosu.dev/response-feedback/1a7b0768-9030-4d61-8d1e-1840c5bfdd49?feedback_type=other)</sup>&nbsp;&nbsp;[![Join
 
Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Sh
 are on 
X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/apache/superset/discussions/33957)

GitHub link: 
https://github.com/apache/superset/discussions/33957#discussioncomment-13631452

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: 
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to