# MySQL运行指南

## 创建网络
> docker network create dalian-nft-network
## 运行MySQL，注意修改密码
> docker run -d --name mysql-container --network dalian-nft-network -p 3306:3306 -v G:\DockerMySQL\Data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_ROOT_HOST=% mysql/mysql-server:8.0
## 附上：已存在容器绑定网络
> docker network connect dalian-nft-network mysql-container

# 运行指南之远程部署

## 步骤 1：在 IDEA 中配置远程 Docker 连接
> 打开设置：File -> Settings (Windows/Linux) 或 IntelliJ IDEA -> Preferences (Mac)。<br>
> 导航到：Build, Execution, Deployment -> Docker。<br>
> 点击 + 号添加一个新的 Docker 配置。<br>
> 选择 SSH。<br>
> 在弹出的窗口中配置 SSH 连接信息：<br>
> 点击 ... 按钮创建一个新的 SSH 配置。<br>
> Host: 您服务器的 IP 地址或域名。<br>
> Port: SSH 端口，默认为 22。<br>
> Username: 登录服务器的用户名（例如 ec2-user, ubuntu, root 等）。<br>
> Authentication type: 选择 Key pair。<br>
> Private key file: 点击文件夹图标，选择您本地的 .pem 密钥文件。<br>
> Passphrase: 如果您的密钥有密码，请填写。<br>
> 点击 Test Connection 测试连接是否成功。成功后保存。<br>
> 返回 Docker 配置页面，IDEA 会自动填好 SSH connection。点击 OK 保存。现在 IDEA 已经可以管理您远程服务器上的 Docker 了。<br>

---
## 步骤 2：创建并配置 Docker 运行配置 (Run Configuration)
> 在 IDEA 的右上角，点击 Add Configuration...。<br>
>  +，选择 Docker -> Dockerfile。<br>
> 进行核心配置：<br>
> Name: 给这个配置起个名字，例如 Deploy to Production Server。<br>
> Server: 在下拉菜单中，选择你刚刚配置好的那个远程 SSH 服务器。这是最关键的一步！<br>
> : 选择您项目中的 Dockerfile 文件。<br>
> Image tag: 为即将在服务器上构建的镜像起个名字，例如 my-jfinal-app:latest。<br>
> Container name: 为即将运行的容器起个名字，例如 jfinal-prod-container。<br>

> 关键：配置环境变量<br>
> 点击 Run options 右边的文件夹图标，打开 Modify options。<br>
> 勾选 Environment variables。<br>
> 在 Environment variables 输入框中，点击右侧的图标，添加服务器的数据库配置：<br>

> 其它:<br>
DEV_MODE=0<br>
> 站点:<br>
UPLOAD_BASE_PATH=/app/uploads<br>
URL_BASE=https://dlsh-nft.com.cn<br>
URL_BASE_ADMIN=https://ad.dlsh-nft.com.cn<br>
> DB：<br>
DB_USER=root<br>
DB_PASSWORD=<br>
DB_URL=jdbc:mysql://mysql-container:3306/dalian-nft-db<br>
> BSN:<br>
BSN_API_TOKEN=<br>
BSN_OWNER=<br>
> 京东：<br>
JD_TEMPLATE_ID=<br>
JD_SECRET_KEY=<br>
JD_SIGN_ID=<br>
JD_ACCESS_KEY=<br>
> 慧用工：<br>
HYG_AES_KEY=<br>
HYG_COOPERATOR_ID=<br>
HYG_RSA_PRIVATE_KEY=<br>
HYG_DOMAIN=https://oapi.hvyogo.com<br>


> 关键：配置端口映射<br>
> 勾选 Bind ports。<br>
> 添加一个映射，将服务器的端口（Host port）映射到容器的端口（Container port），例如 8888:8888。<br>
> 
> Modify - Run Options
> 在这个新的输入框中输入：--network dalian-nft-network -v /app/jfinal_uploads:/app/uploads



服务器上一直pull不下来mysql/mysql-server:8.0
索性使用mysql:8.0
或者先pull再构建也可以，国内源是这样的，从2023年之后不稳定
虽然宿主机的端口是33061，但是使用容器内部网络访问时应该写3306
docker run -d --name mysql-container -p 33061:3306 -v /app/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxxxx -e MYSQL_ROOT_HOST=% mysql:8.0

## 使用IDEA并在本地生成代码时，可以在运行里配置数据库相关环境变量
参考：DB_PASSWORD=123456; DB_URL=jdbc:mysql://mysql-container:3306/dalian-nft-db; DB_USER=root; DEV_MODE=0; UPLOAD_BASE_PATH=/app/uploads; URL_BASE=http://117.72.208.239