1 准备mysql相关
mysql8
|-- conf
| |-- init.sql
| |-- my.cnf
| `-- mysql.env
|-- db
|-- docker-compose.yaml
`-- mysql-files
- 操作步骤
# 链接 https://pan.baidu.com/s/1yFVSy-_00_4P0cuAVIugUQ?pwd=lv3v
# 创建mysql时会自动创建superset数据库
create database if not exists superset character set utf8mb4 collate utf8mb4_bin;
version: '3'
services:
mysql:
image: mysql:8.0
container_name: mysql8.0
user: root
privileged: true
restart: unless-stopped
ports:
- 3307:3306
env_file:
- ./conf/mysql.env
environment:
- TZ=Asia/Shanghai
command:
--default-authentication-plugin=mysql_native_password
volumes:
- ./conf/my.cnf:/etc/mysql/my.cnf
- ./db:/var/lib/mysql
- ./mysql-files:/var/lib/mysql-files
- ./conf/init.sql:/docker-entrypoint-initdb.d/init.sql
#
docker-compose up -d
2 superset相关
- 操作步骤如下
version: '3'
services:
superset:
image: amancevice/superset:3.0.1
container_name: superset
hostname: superset
restart: always
ports:
- 8080:8088
environment:
- TZ=Asia/Shanghai
volumes:
- ./superset_config.py:/etc/superset/superset_config.py
- ./data:/var/lib/superset
ROW_LIMIT = 5000
SUPERSET_WEBSERVER_PORT = 8088
# 生成命令:openssl rand -base64 42
SECRET_KEY = 'oCghysSLvk2BSa9bPEOz6avKzjLHYkedO6ztCZ/sv5j3pwuIg63wVLeY'
# 此处配置的是mysql连接信息,用了ecs宿主机私网地址
SQLALCHEMY_DATABASE_URI = 'mysql://root:n9w3EHspaR@10.243.1.8:3307/superset'
WTF_CSRF_ENABLED = True
TALISMAN_ENABLED = False
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365
BABEL_DEFAULT_LOCALE = "zh"
LANGUAGES = {
"zh": {"flag": "cn", "name": "简体中文"},
"en": {"flag": "us", "name": "English"},
}
# 启动后,会看到数据库中自动创建了几个空白基础表
docker-compose up -d
# 主要是创建管理员用户和表及插入基础数据
docker exec -it 8556cc81d8e7 superset-init
# 接下来按提示创建管理员用户信息回车即可
3 拓展
amancevice/superset
https://github.com/amancevice/docker-superset
ARG NODE_VERSION=16
ARG PYTHON_VERSION=3.9
FROM python:PYTHON_VERSION
# Configure environment
# superset/gunicorn recommended defaults:
# - https://superset.apache.org/docs/installation/configuring-superset#running-on-a-wsgi-http-server
# - https://docs.gunicorn.org/en/latest/configure.html
ENV FLASK_APP=superset
ENV GUNICORN_BIND=0.0.0.0:8088
ENV GUNICORN_LIMIT_REQUEST_FIELD_SIZE=8190
ENV GUNICORN_LIMIT_REQUEST_LINE=4094
ENV GUNICORN_THREADS=4
ENV GUNICORN_TIMEOUT=120
ENV GUNICORN_WORKERS=10
ENV GUNICORN_WORKER_CLASS=gevent
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
ENV PYTHONPATH=/etc/superset:/home/superset:PYTHONPATH
ENV SUPERSET_HOME=/var/lib/superset
ENV GUNICORN_CMD_ARGS="--bind GUNICORN_BIND --limit-request-field_sizeGUNICORN_LIMIT_REQUEST_FIELD_SIZE --limit-request-line GUNICORN_LIMIT_REQUEST_LINE --threadsGUNICORN_THREADS --timeout GUNICORN_TIMEOUT --workersGUNICORN_WORKERS --worker-class GUNICORN_WORKER_CLASS"
# Configure filesystem
COPY bin /usr/local/bin
VOLUME /etc/superset
VOLUME /home/superset
VOLUME /var/lib/superset
# Create superset user&install dependencies
WORKDIR /home/superset
RUN groupadd supergroup && useradd -U -G supergroup superset && mkdir -pSUPERSET_HOME &&
mkdir -p /etc/superset &&
chown -R superset:superset $SUPERSET_HOME &&
chown -R superset:superset /home/superset &&
chown -R superset:superset /etc/superset &&
apt-get update &&
apt-get install -y
build-essential
curl
default-libmysqlclient-dev
freetds-bin
freetds-dev
libaio1
libecpg-dev
libffi-dev
libldap2-dev
libpq-dev
libsasl2-2
libsasl2-dev
libsasl2-modules-gssapi-mit
libssl-dev &&
apt-get clean &&
pip install -U pip
# Install pips
RUN pip install pystan==3.7.0
COPY requirements*.txt ./
RUN pip install -r requirements.txt
RUN pip install -r requirements-dev.txt
# Configure application
EXPOSE 8088
USER superset
HEALTHCHECK CMD ["curl", "-f", "http://localhost:8088/health"]
CMD ["gunicorn", "superset.app:create_app()"]