如何保持空数据库数据库docker容器再次启动

col17t5w  于 2023-10-16  发布在  Docker
关注(0)|答案(2)|浏览(192)

下面是我的docker-compose.yml代码

mariadb:
  image: mariadb:10.8.2
  restart: always
  environment:
    MARIADB_ROOT_PASSWORD: test
    MARIADB_DATABASE: mydb
  ports:
  -  "3306:3306"
  container_name: mariadb
  networks:
  - my-network

然后使用以下命令启动Docker容器

docker stop mariadb
docker rm mariadb
docker-compose up -d --remove-orphans mariadb
sleep 15 # wait until database is fully started
docker exec mariadb mysql -u root -ptest -e "CREATE DATABASE product;"

启动Docker容器后,即命令docker-compose up -d --remove-orphans mariadb,下一个命令是创建一个名为product的数据库。但是,问题是存在以下错误ERROR 1007 (HY000) at line 1: Can't create database 'dictionary'; database exists

**问题:**为什么一开始就删除了容器和镜像,但之前创建的数据库仍然存在?如何在没有现有数据库的情况下第二次创建容器?

tjvv9vkg

tjvv9vkg1#

在dockerfiles中有使用VOLUME创建的匿名卷。
你把docker compose和docker命令混在一起很奇怪。使用docker compose down -v删除卷和匿名卷。
此外,现在考虑使用docker compose v2代替旧的docker-compose

8wigbo56

8wigbo562#

你没有发布你的compose文件,但我猜你把MariaDB数据文件夹Map到了外部卷,所以再次运行compose,你会得到旧的DB数据。

相关问题