# Jupyter：数据分析笔记本与 AI IDE

> 使用 Pigsty v2.7 自带的 Docker Compose 模板运行 Jupyter Lab，并访问 PostgreSQL。
---

Pigsty v2.7 在 `app/jupyter` 中提供 Jupyter Docker Compose 模板。修改
[`app/jupyter/.env`](https://github.com/Vonng/pigsty/blob/v2.7.0/app/jupyter/.env)
中的镜像、端口与令牌后，创建数据目录并启动容器：

```bash
cd ~/pigsty/app/jupyter
make dir up
```

默认配置使用 `jupyter/minimal-notebook:latest`，监听 `8888` 端口，令牌为
`pigsty`。可访问 [http://lab.pigsty](http://lab.pigsty) 或
`http://10.10.10.10:8888`。

## 数据目录

模板将 `/data/jupyter` 挂载到容器内的 `/home/jovyan/work`，并要求目录
属主为 `1000:100`：

```bash
make dir   # mkdir -p /data/jupyter; chown -R 1000:100 /data/jupyter
```

该行为对应 v2.7.0 标签中的
[`app/jupyter/docker-compose.yml`](https://github.com/Vonng/pigsty/blob/v2.7.0/app/jupyter/docker-compose.yml)
与 [`app/jupyter/Makefile`](https://github.com/Vonng/pigsty/blob/v2.7.0/app/jupyter/Makefile)。

## 访问 PostgreSQL

可在 Jupyter 终端中安装 PostgreSQL Python 驱动：

```bash
pip install psycopg2-binary psycopg2
```

然后从 Notebook 建立连接：

```python
import psycopg2

conn = psycopg2.connect(
    "postgres://dbuser_dba:DBUser.DBA@10.10.10.10:5432/meta"
)
cursor = conn.cursor()
cursor.execute("SELECT * FROM pg_stat_activity")
rows = cursor.fetchall()
```

## Makefile 命令

```bash
make up         # 使用 Docker Compose 启动 Jupyter
make dir        # 创建 /data/jupyter 并设置属主
make run        # 使用 docker run 启动 Jupyter
make view       # 打印访问地址
make log        # 查看容器日志
make info       # 使用 jq 检查容器
make stop       # 停止容器
make clean      # 删除容器
make pull       # 拉取镜像
make rmi        # 删除镜像
make save       # 保存镜像到 /tmp/docker/jupyter.tgz
make load       # 从 /tmp/docker/jupyter.tgz 载入镜像
```

v2.7.0 已不再包含旧版 `infra-jupyter.yml` 剧本与
`jupyter_username`、`jupyter_password`、`jupyter_domain` 参数；这些属于
早期版本，不能用于本分支。
