使用 Docker Compose 快速部署 Oracle 11G 与 RustFS
·
使用 Docker Compose 快速部署 Oracle 11G 与 RustFS
本文将详细介绍如何通过 Docker Compose 一键部署 Oracle 11G 数据库与 RustFS 对象存储服务,并提供完整的配置说明与使用示例。
目录
前置准备
在开始之前,请确保你的环境满足以下条件:
- 已安装 Docker(建议版本 20.10+)
- 已安装 Docker Compose(建议版本 2.0+)
- 确保服务器端口 1521(Oracle)和 9000/9001(RustFS)未被占用
- 确保有足够的磁盘空间(建议预留 10GB+)
Oracle 11G 部署
1. 创建 Docker Compose 文件
在项目目录下创建 docker-compose-oracle.yaml 文件,内容如下:
version: '3'
services:
oracle:
# 官方维护的 Oracle 11g 镜像(最稳定、常用)
image: oracleinanutshell/oracle-xe-11g
container_name: oracle11g
ports:
- "1521:1521" # Oracle 默认端口
volumes:
- ./volumes/data:/home/oracle/app/oracle/oradata # 数据持久化
environment:
- TZ=Asia/Shanghai
restart: always
privileged: true # 必须开启,否则启动失败
2. 启动 Oracle 11G 服务
# 创建数据目录
mkdir -p ./volumes/data
# 启动服务
docker-compose -f docker-compose-oracle.yaml up -d
# 查看日志,等待初始化完成
docker logs -f oracle11g
注意:首次启动需要等待 3-5 分钟完成数据库初始化,当看到
Database ready to use字样时表示启动成功。
3. 默认连接信息
| 参数 | 值 |
|---|---|
| 主机地址 | localhost 或服务器 IP |
| 端口 | 1521 |
| SID | xe |
| 默认用户名 | system |
| 默认密码 | oracle |
连接示例(使用 SQL*Plus):
# 进入容器
docker exec -it oracle11g sqlplus system/oracle
或使用 SQL 客户端连接:
jdbc:oracle:thin:@localhost:1521:xe
4. 初始化数据库配置
连接到数据库后,执行以下 SQL 脚本完成基础配置:
4.1 创建临时表空间
CREATE TEMPORARY TABLESPACE temp_ts
TEMPFILE '/home/oracle/app/oracle/oradata/xe/temp_ts.dbf'
SIZE 100M AUTOEXTEND ON;
4.2 创建 TEST 表空间
CREATE TABLESPACE test
DATAFILE '/home/oracle/app/oracle/oradata/xe/test.dbf'
SIZE 100M
AUTOEXTEND ON
NEXT 25M
MAXSIZE 500M;
4.3 创建业务用户并授权
-- 创建用户
CREATE USER testuser IDENTIFIED BY testuser123
DEFAULT TABLESPACE test
TEMPORARY TABLESPACE temp_ts
QUOTA UNLIMITED ON test;
-- 授权(确保 CRUD 操作不受影响)
GRANT CREATE SESSION TO testuser;
GRANT CREATE TABLE TO testuser;
GRANT CREATE VIEW TO testuser;
GRANT CREATE SEQUENCE TO testuser;
GRANT CREATE TRIGGER TO testuser;
GRANT CREATE PROCEDURE TO testuser;
GRANT CREATE SYNONYM TO testuser;
GRANT UNLIMITED TABLESPACE TO testuser;
-- 数据操作权限
GRANT SELECT ANY TABLE TO testuser;
GRANT INSERT ANY TABLE TO testuser;
GRANT UPDATE ANY TABLE TO testuser;
GRANT DELETE ANY TABLE TO testuser;
-- 连接权限
GRANT CONNECT TO testuser;
GRANT RESOURCE TO testuser;
-- 如果需要 DBA 权限(可选,生产环境慎用)
-- GRANT DBA TO testuser;
4.4 创建示例表 T1
使用 testuser 登录后执行:
CONNECT testuser/testuser123
CREATE TABLE T1 (
id NUMBER PRIMARY KEY,
name VARCHAR2(100) NOT NULL,
description VARCHAR2(500),
created_at DATE DEFAULT SYSDATE,
status NUMBER(1) DEFAULT 1
);
-- 添加注释
COMMENT ON TABLE T1 IS '示例业务表';
COMMENT ON COLUMN T1.id IS '主键ID';
COMMENT ON COLUMN T1.name IS '名称';
COMMENT ON COLUMN T1.description IS '描述';
COMMENT ON COLUMN T1.created_at IS '创建时间';
COMMENT ON COLUMN T1.status IS '状态:1-有效,0-无效';
-- 创建序列(用于自增ID)
CREATE SEQUENCE seq_t1_id START WITH 1 INCREMENT BY 1;
-- 插入测试数据
INSERT INTO T1 (id, name, description) VALUES (seq_t1_id.NEXTVAL, '测试数据1', '第一条测试记录');
INSERT INTO T1 (id, name, description) VALUES (seq_t1_id.NEXTVAL, '测试数据2', '第二条测试记录');
COMMIT;
-- 查询验证
SELECT * FROM T1;
5. 常用运维命令
# 停止 Oracle
docker-compose -f docker-compose-oracle.yaml down
# 重启 Oracle
docker-compose -f docker-compose-oracle.yaml restart
# 查看运行状态
docker ps | grep oracle11g
# 备份数据(导出)
docker exec oracle11g expdp system/oracle DIRECTORY=DATA_PUMP_DIR DUMPFILE=backup.dmp FULL=y
# 进入容器执行 SQL
docker exec -it oracle11g sqlplus system/oracle
RustFS 部署
1. 创建 Docker Compose 文件
在项目目录下创建 docker-compose-rustfs.yaml 文件,内容如下:
# Copyright 2024 RustFS Team
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
version: "3.9"
services:
# RustFS main service
rustfs:
image: rustfs/rustfs:latest
container_name: rustfs-server
security_opt:
- "no-new-privileges:true"
ports:
- "9000:9000" # S3 API port
- "9001:9001" # Console port
environment:
- RUSTFS_VOLUMES=/data/rustfs{0...3}
- RUSTFS_ADDRESS=0.0.0.0:9000
- RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001
- RUSTFS_CONSOLE_ENABLE=true
- RUSTFS_CORS_ALLOWED_ORIGINS=*
- RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS=*
- RUSTFS_ACCESS_KEY=rustfsadmin # CHANGEME
- RUSTFS_SECRET_KEY=rustfsadmin # CHANGEME
- RUSTFS_OBS_LOGGER_LEVEL=info
- RUSTFS_TLS_PATH=/opt/tls
# Object Cache
- RUSTFS_OBJECT_CACHE_ENABLE=true
- RUSTFS_OBJECT_CACHE_TTL_SECS=300
volumes:
- ./volumes/rustfs_data_0:/data/rustfs0
- ./volumes/rustfs_data_1:/data/rustfs1
- ./volumes/rustfs_data_2:/data/rustfs2
- ./volumes/rustfs_data_3:/data/rustfs3
- ./volumes/logs:/app/logs
networks:
- rustfs-network
restart: unless-stopped
healthcheck:
test:
[
"CMD",
"sh", "-c",
"curl -f http://127.0.0.1:9000/health && curl -f http://127.0.0.1:9001/rustfs/console/health"
]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# RustFS volume permissions fixer service
volume-permission-helper:
image: alpine
volumes:
- ./volumes/rustfs_data_0:/data0
- ./volumes/rustfs_data_1:/data1
- ./volumes/rustfs_data_2:/data2
- ./volumes/rustfs_data_3:/data3
- ./volumes/logs:/logs
command: >
sh -c "
chown -R 10001:10001 /data0 /data1 /data2 /data3 /logs &&
echo 'Volume Permissions fixed' &&
exit 0
"
restart: "no"
networks:
rustfs-network:
2. 启动 RustFS 服务
# 创建数据目录
mkdir -p ./volumes/rustfs_data_{0,1,2,3}
mkdir -p ./volumes/logs
# 启动服务(先运行权限修复,再启动主服务)
docker-compose -f docker-compose-rustfs.yaml up -d volume-permission-helper
docker-compose -f docker-compose-rustfs.yaml up -d rustfs
# 查看日志
docker logs -f rustfs-server
3. 访问 RustFS
服务启动后,可以通过以下地址访问:
| 服务 | 访问地址 | 说明 |
|---|---|---|
| S3 API 端点 | http://<服务器IP>:9000 |
程序/SDK 调用接口 |
| Web 管理控制台 | http://<服务器IP>:9001 |
浏览器可视化界面 |
请将
<服务器IP>替换为实际的服务器 IP 地址或localhost(本地部署时)。
4. 默认登录凭证
| 参数 | 值 |
|---|---|
| Access Key | rustfsadmin |
| Secret Key | rustfsadmin |
5. 配置 S3 资源
5.1 通过 Web 控制台配置
- 打开浏览器,访问
http://<服务器IP>:9001 - 输入 Access Key
rustfsadmin和 Secret Keyrustfsadmin登录 - 在左侧导航栏点击 Buckets → Create Bucket
- 输入 Bucket 名称(例如
my-bucket),点击 Create - 进入 Bucket 后,可以上传文件、设置访问策略、配置生命周期规则等
5.2 通过 AWS CLI 配置(推荐)
# 安装 AWS CLI(如未安装)
pip install awscli
# 配置 RustFS 凭证
aws configure --profile rustfs
# 根据提示输入:
# AWS Access Key ID: rustfsadmin
# AWS Secret Access Key: rustfsadmin
# Default region name: us-east-1
# Default output format: json
# 配置 S3 端点地址
aws --profile rustfs --endpoint-url http://<服务器IP>:9000 s3 ls
# 创建 Bucket
aws --profile rustfs --endpoint-url http://<服务器IP>:9000 s3 mb s3://my-bucket
# 上传文件
aws --profile rustfs --endpoint-url http://<服务器IP>:9000 s3 cp ./test.txt s3://my-bucket/
# 列出文件
aws --profile rustfs --endpoint-url http://<服务器IP>:9000 s3 ls s3://my-bucket/
5.3 通过 SDK 配置(以 Python boto3 为例)
import boto3
# 初始化 S3 客户端
s3_client = boto3.client(
's3',
endpoint_url='http://<服务器IP>:9000', # RustFS S3 API 端点
aws_access_key_id='rustfsadmin',
aws_secret_access_key='rustfsadmin',
region_name='us-east-1'
)
# 创建 Bucket
s3_client.create_bucket(Bucket='my-bucket')
# 上传文件
s3_client.upload_file('local_file.txt', 'my-bucket', 'remote_file.txt')
# 下载文件
s3_client.download_file('my-bucket', 'remote_file.txt', 'downloaded_file.txt')
# 列出 Bucket 中的对象
response = s3_client.list_objects_v2(Bucket='my-bucket')
for obj in response.get('Contents', []):
print(obj['Key'])
5.4 修改默认密码(生产环境必须)
编辑 docker-compose-rustfs.yaml 文件,修改以下环境变量:
environment:
- RUSTFS_ACCESS_KEY=your-new-access-key # 修改为强密码
- RUSTFS_SECRET_KEY=your-new-secret-key # 修改为强密码
修改后重启服务:
docker-compose -f docker-compose-rustfs.yaml down
docker-compose -f docker-compose-rustfs.yaml up -d
6. 常用运维命令
# 停止 RustFS
docker-compose -f docker-compose-rustfs.yaml down
# 重启 RustFS
docker-compose -f docker-compose-rustfs.yaml restart
# 查看运行状态
docker ps | grep rustfs-server
# 查看实时日志
docker logs -f rustfs-server
# 进入容器排查问题
docker exec -it rustfs-server sh
总结
本文介绍了如何通过 Docker Compose 快速部署 Oracle 11G 和 RustFS,主要内容包括:
| 服务 | 默认端口 | 默认账号 | 默认密码 | 访问地址 |
|---|---|---|---|---|
| Oracle 11G | 1521 |
system |
oracle |
localhost:1521 |
| RustFS S3 API | 9000 |
rustfsadmin |
rustfsadmin |
http://<IP>:9000 |
| RustFS 控制台 | 9001 |
rustfsadmin |
rustfsadmin |
http://<IP>:9001 |
生产环境建议
- 修改默认密码:务必修改 Oracle 的
system密码和 RustFS 的 Access/Secret Key - 启用 TLS:为 RustFS 配置 HTTPS 证书,确保数据传输安全
- 数据备份:定期备份 Oracle 数据文件和 RustFS 存储卷
- 网络隔离:使用 Docker 网络限制服务暴露范围,避免直接暴露在公网
- 监控告警:配置日志收集和性能监控,及时发现异常
如有问题,欢迎在评论区留言交流!
版权声明:RustFS 部分遵循 Apache 2.0 开源协议,Oracle 镜像遵循相应授权协议。本文仅供学习交流使用。
更多推荐

所有评论(0)