DockerでRedashの環境を構築してみる+別プロジェクトのDocker上のMySQLに接続してみる(Windows)
.png)
下記の記事を参考にDockerにRedashの環境を作成して、MySQLに接続してみました。
redashをdockerだけで起動するメモ #redash – Qiita
接続するMySQLは下記で構築したものです。
目次
Redashのリポジトリをクローン
git clone https://github.com/getredash/redash.git
クローン後、ディレクトリを移動します。
cd redash
Dockerfileを編集
クローンしてきたDockerfileをあれこれ加筆修正するのですが、箇所が多すぎるので内容を下記でまるっと上書きします。
修正内容
FROM node:18-bookworm AS frontend-builder
# Install yarn globally
RUN npm install --global --force yarn@1.22.22
ARG skip_frontend_build
ENV CYPRESS_INSTALL_BINARY=0
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
RUN useradd -m -d /frontend redash
USER redash
WORKDIR /frontend
# Copy necessary files
COPY --chown=redash package.json yarn.lock .yarnrc /frontend/
COPY --chown=redash viz-lib /frontend/viz-lib
COPY --chown=redash scripts /frontend/scripts
ARG code_coverage
ENV BABEL_ENV=${code_coverage:+test}
# Set yarn network timeout
RUN yarn config set network-timeout 300000
# Install dependencies if not skipping frontend build
RUN test -z "$skip_frontend_build" && yarn install --frozen-lockfile --network-concurrency 1 || true
COPY --chown=redash client /frontend/client
COPY --chown=redash webpack.config.js /frontend/
# Build frontend or create placeholder files
RUN bash -c 'if [ -z "$skip_frontend_build" ]; then yarn build; else mkdir -p /frontend/client/dist && touch /frontend/client/dist/multi_org.html /frontend/client/dist/index.html; fi'
# --- Python backend ---
FROM python:3.10-slim-bookworm
EXPOSE 5000
RUN useradd --create-home redash
# Install system dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends \
pkg-config \
curl \
gnupg \
build-essential \
pwgen \
libffi-dev \
sudo \
git-core \
libkrb5-dev \
libpq-dev \
g++ unixodbc-dev \
xmlsec1 \
libssl-dev \
default-libmysqlclient-dev \
freetds-dev \
libsasl2-dev \
unzip \
npm \
libsasl2-modules-gssapi-mit && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get install -y nodejs && \
npm install -g yarn@1.22.22
ARG TARGETPLATFORM
ARG databricks_odbc_driver_url=https://databricks-bi-artifacts.s3.us-east-2.amazonaws.com/simbaspark-drivers/odbc/2.6.26/SimbaSparkODBC-2.6.26.1045-Debian-64bit.zip
# Install ODBC drivers if on amd64
RUN bash -c 'if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg && \
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 --no-install-recommends msodbcsql18 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
curl "$databricks_odbc_driver_url" --location --output /tmp/simba_odbc.zip && \
chmod 600 /tmp/simba_odbc.zip && \
unzip /tmp/simba_odbc.zip -d /tmp/simba && \
dpkg -i /tmp/simba/*.deb && \
printf "[Simba]\nDriver = /opt/simba/spark/lib/64/libsparkodbc_sb64.so" >> /etc/odbcinst.ini && \
rm /tmp/simba_odbc.zip && \
rm -rf /tmp/simba; fi'
WORKDIR /app
ENV POETRY_VERSION=2.1.4
ENV POETRY_HOME=/etc/poetry
ENV POETRY_VIRTUALENVS_CREATE=false
# Install Poetry
RUN curl -sSL https://install.python-poetry.org | python3 -
# Clear Poetry cache
RUN /etc/poetry/bin/poetry cache clear pypi --all
COPY pyproject.toml poetry.lock ./
ARG POETRY_OPTIONS="--no-root --no-interaction --no-ansi"
ARG install_groups="main,all_ds,dev"
RUN /etc/poetry/bin/poetry install --only $install_groups $POETRY_OPTIONS
COPY --chown=redash . /app
COPY --from=frontend-builder --chown=redash /frontend/client/dist /app/client/dist
RUN chown redash /app
USER redash
ENTRYPOINT ["/app/bin/docker-entrypoint"]
CMD ["server"]

アプリケーションの定義ファイル(YAML)を修正
個人的にcompose.yamlよりdocker-compose.ymlの方が好き&馴染みがあるので、まずはファイル名を修正します。
ren compose.yaml docker-compose.ymlDockerfile同様に加筆修正するのですが、面倒なのでこちらも丸コピで。
なお、ネットワークの設定をMySQLと合わせてありますので、独自で環境を作った方は適宜修正してください。
修正内容
# This configuration file is for the **development** setup.
# For a production example please refer to getredash/setup repository on GitHub.
x-redash-service: &redash-service
build:
context: .
args:
skip_frontend_build: "true" # set to empty string to build
volumes:
- .:/app
env_file:
- .env
networks:
- mysql_default
x-redash-environment: &redash-environment
REDASH_HOST: http://localhost:5001
REDASH_LOG_LEVEL: "INFO"
REDASH_REDIS_URL: "redis://redis:6379/0"
REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
REDASH_RATELIMIT_ENABLED: "false"
REDASH_MAIL_DEFAULT_SENDER: "redash@example.com"
REDASH_MAIL_SERVER: "email"
REDASH_MAIL_PORT: 1025
REDASH_ENFORCE_CSRF: "true"
REDASH_GUNICORN_TIMEOUT: 60
# Set secret keys in the .env file
services:
server:
<<: *redash-service
command: dev_server
depends_on:
- postgres
- redis
ports:
- "5001:5000"
- "5678:5678"
environment:
<<: *redash-environment
PYTHONUNBUFFERED: 0
networks:
- mysql_default
scheduler:
<<: *redash-service
command: dev_scheduler
depends_on:
- server
environment:
<<: *redash-environment
networks:
- mysql_default
worker:
<<: *redash-service
command: dev_worker
depends_on:
- server
environment:
<<: *redash-environment
PYTHONUNBUFFERED: 0
networks:
- mysql_default
redis:
image: redis:7-alpine
restart: unless-stopped
networks:
- mysql_default
postgres:
image: postgres:18-alpine
ports:
- "15432:5432"
# The following turns the DB into less durable, but gains significant performance improvements for the tests run (x3
# improvement on my personal machine). We should consider moving this into a dedicated Docker Compose configuration for
# tests.
command: "postgres -c fsync=off -c full_page_writes=off -c synchronous_commit=OFF"
restart: unless-stopped
environment:
POSTGRES_HOST_AUTH_METHOD: "trust"
volumes:
- db-store:/var/lib/postgresql/data
networks:
- mysql_default
email:
image: maildev/maildev
ports:
- "1080:1080"
- "1025:1025"
restart: unless-stopped
networks:
- mysql_default
volumes:
db-store:
networks:
mysql_default:
external: true
.envファイルを作成
.envファイルがないとbuildに失敗するので作成します。
type nul > .env内容は下記(odanekoの部分は任意で変更)。
REDASH_COOKIE_SECRET='odaneko'
コンテナをビルド
docker compose build
完了までかなり時間がかかると思います。
最終的に下記が表示されたらOKです。

データベース作成
docker compose run --rm server create_db
yarnをインストール・ビルド
yarnをインストール
docker compose run --rm server yarn install
完了までかなり時間がかかると思います。
最終的に下記が表示されたらOKです。

yarnをインストール
docker compose run --rm server yarn run build
完了までかなり時間がかかると思います。
最終的に下記が表示されたらOKです。

コンテナを起動
docker compose up -d
Dockerの画面上でもRedashのコンテナが起動していることを確認します。

Redashに初回ログイン
Redashにアクセス
コンテナ起動直後は中でいろいろと起動中のようですので、少し時間がたってから下記のURLにアクセスします。
http://localhost:5001
Redashのセットアップ画面が表示されたら正常に環境構築ができています。

管理ユーザーを作成
所詮ローカル環境なので、メールアドレスは存在しない適当なアドレスでOKです。
あとメール購読系は邪魔なのチェックを外します。(存在しないアドレスなので、別にいいんですけど)

Redashの管理画面にログイン出来たらOKです。

MySQLに接続
下記の記事で作成したMySQLに接続してみます。
左下のSettingsをクリック。

New Data Sourceをクリック。

ポップアップでMySQLを選択し、接続情報を入力していきます。

接続情報を入力したら、一番下のCreateをクリック。

下にスクロールして・・・

Saveボタンをクリック。

Test Connectionをクリックして、Successと表示されたらOKです。

MySQLにクエリを実行してみる
左側のQueriesをクリック→右上のNew Queryをクリック。

左上のプルダウンでデータベースを選択して、適当にクエリを実行してレコードが取得できていることを確認します。

以上になります。
お読み頂き、ありがとうございました。


