【发布时间】:2020-04-28 08:22:51
【问题描述】:
我发现我的 Dockerized Oracle 像我做 docker-compose up -d oracle 一样重新创建了整个架构(表、包等)。可悲的是丢失了我所有的本地数据T_T
架构是在容器首次启动时自动创建的。我读过的一些材料说, docker-compose down 将撤消 docker-compose up 所做的任何事情。
我想知道这是否属实,是否与我的问题有关?
下面是我的卷在 docker-compose.yml 中对 Oracle 的配置
volumes:
- ${HOST_PATH}/config/localtime:/etc/localtime:ro
- ${HOST_PATH}/config/timezone:/etc/timezone:ro
- ${HOST_PATH}/config/scripts/:/scripts/:ro
- oracle_data:/opt/oracle/oradata
# Setup data pump directory to initialize the database
- ${HOST_PATH}/test-data/prebuilt/:/prebuilt/
- ${HOST_PATH}/test-data/datapump/:/datapump/
- ${HOST_PATH}/config/oracle/ora-init-scripts/:/opt/oracle/scripts/startup
我不确定,但我认为主要数据未使用此配置安装到外部 - oracle_data:/opt/oracle/oradata 因此内部卷将随着容器被 docker-compose down 破坏而被破坏?
【问题讨论】:
-
你研究过 Docker 卷吗?停止容器不应破坏数据。
-
执行 docker-compose stop 不会破坏数据。但是 docker-compose down 呢?我已将卷的配置放在问题中。
-
快速谷歌搜索会告诉你
down删除容器/卷。 -
我知道 docker-compose down 会删除容器,但只有使用参数 -v 它也会删除卷。而且我从来没有使用 -v..
-
这不是
docker compose的问题,它在做什么,而是您的卷是什么以及您是否保留了数据库数据文件。另一方面,这在很大程度上取决于您使用的 Docker 映像以及数据文件的放置位置。默认情况下,Oracle 数据库会将您的所有数据库数据文件放在$ORACLE_HOME/oradata/$ORACLE_SID下,只要它存在,您的数据也会存在。查看上面的内容,我在您的卷配置中看不到任何oradata或类似内容。您使用的是哪个 Docker 映像,数据库数据文件驻留在哪里?
标签: oracle docker docker-compose