Set up an air-gapped environment (no HTTP proxy available)
By default, Datalore does not include bundled JDBC drivers in order to have a smaller size of the SQL runtime image and to keep driver versions up-to-date. However, you can pre-load those drivers and set up your own SQL runtime image to use Datalore in an air-gapped environment.
For JDBC drivers, apply one of the options available here.
Use the following syntax formats:
{artifact name}
or{artifact name}:{version}
.note
PostgreSQL and Redshift driver versions are listed under
<artifact id="PostgreSQL 2" name="PostgreSQL 2">
and<artifact id="Redshift 2" name="Redshift 2"/>
respectively.Make sure you specify the actual version ID (for example, "42.3.3"), not the section name ("PostgreSQL 2).
Specify the custom image in the config file of your installation (datalore.values.yaml or docker-compose.yaml) as shown in the example below.
After the above-mentioned custom images are rebuilt and pushed, configure the Datalore server environment by adding the
DATABASES_COMMAND_IMAGE
variable to the Datalore config file and restart Datalore.
Examples
Dockerfile
FROM jetbrains/datalore-database-command:2025.1
RUN ["/opt/datalore/download_artifacts.sh", "'MySQL Connector/J 8'"]
RUN ["/opt/datalore/download_artifacts.sh", "'Redshift:2.0.0.7'"]
RUN ["/opt/datalore/download_artifacts.sh", "'PostgreSQL:42.3.3'"]
note
The specific driver versions provided in the code above are for illustration purposes only. We recommend that you check the up-to-date list of versions before downloading.
Datalore config files
docker-compose.yaml
services:
datalore:
image: jetbrains/datalore-server:2025.1
ports:
- "8080:8080"
expose: [ "8081", "5050", "4060" ]
networks:
- datalore-agents-network
- datalore-backend-network
volumes:
- "datalore-storage:/opt/data"
- "/var/run/docker.sock:/var/run/docker.sock"
environment:
#DATALORE_PUBLIC_URL: "https://datalore.example.com"
DB_PASSWORD: "changeme"
DATABASES_COMMAND_IMAGE: "datalore-db-command-custom:latest"
datalore.values.yaml
dataloreEnv:
DATABASES_COMMAND_IMAGE: "datalore-db-command-custom:latest"
agentsConfig:
....
databaseSecret:
password: "password"
If the clients’ browser is also running in a fully air-gapped environment, the Visualize tab in a rendered DataFrame will not work due to this functionality reliance on the public CDN availability, which is not possible in an air-gapped environment.
Thanks for your feedback!