mysql - 如何在数据库Docker容器中创建数据库?

我是Docker的新手,所以无法理解-如果我要构建mysql/postgresql/clickhouse等容器,如何创建数据库和数据库/表架构?也许在Dockerfile中或者我可以从docker-compose.yml中做到这一点?

我的意思是,我不知道何时何地使用CREATE DATABASE;创建表...;查询我是否使用流行数据库的docker容器

最佳答案

您可以同时使用docker和docker-compose。例如,使用docker compose。

创建一个名为docker-compose.yml的文件,如下所示:

version: '3'
services:
  db:
    image: percona:5.7
    container_name: whatever_you_want
    environment:
      - MYSQL_DATABASE=${DATABASE}
      - MYSQL_ROOT_PASSWORD=${ROOT_PASSWORD}
      - MYSQL_USER=${USER}
      - MYSQL_PASSWORD=${PASSWORD}
    volumes:
      - ./data:/docker-entrypoint-initdb.d
    ports:
      - "3306:3306"

另外,您需要在 ./data下包含一个要运行的SQL命令的文件,以及一个 .env文件,您可以在其中定义我在上面的 docker-compose.yml文件中使用的环境变量,例如: ${DATABASE}
您的 .env文件:
# MySQL
DATABASE=db_name_here
ROOT_USER=root
ROOT_PASSWORD=root
USER=dev
PASSWORD=dev

使用SQL命令执行 ./data/init.sql的文件(您可以根据需要命名文件)
CREATE DATABASE 'whatever';
DROP DATABASE 'whatever';
-- you can do whatever you want here

每次您执行此文件时都会执行:
docker-compose up -d db