AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1041366
Accepted
Koen van der Rijt
Koen van der Rijt
Asked: 2020-11-06 00:16:58 +0800 CST2020-11-06 00:16:58 +0800 CST 2020-11-06 00:16:58 +0800 CST

如何阻止 MySQL 容器在启动时初始化

  • 772

出于测试目的,我想构建一个 MySQL 容器,其中包含一个数据集。我知道挂载是可能的,并且您可以将 sql 脚本放入 init 目录以在开始时运行导入,但这不是我们想要的。所以我尝试自己构建一个,只将数据文件复制到 docker 容器中。

我使用以下 dockerfile 来构建我的容器。

FROM mysql:8.0.21
EXPOSE 3306

ARG BUILD_ID
LABEL stage=builder
LABEL build=$BUILD_ID
ENV TZ=Europe/Amsterdam

RUN apt-get update && apt-get install -y tzdata
ADD http://server.example.com/data/datafiles_2020_11_02.tar.gz /var/lib/datafile.tar.gz
RUN tar -xvzf /var/lib/datafile.tar.gz -C /var/lib/mysql && chown -R mysql.root /var/lib/mysql
#ADD initieel/* /docker-entrypoint-initdb.d/
ADD cnf/* /etc/mysql/mysql.conf.d/

这运行成功,所以之后我启动了我新构建的容器,并且在启动过程中,容器中的某些东西只会初始化一个新的数据库并将我放入 /var/lib/mysql 的所有内容都扔掉。我检查了 mysql 容器附带的自述文件,但我找不到与此相关的任何内容。

提前感谢您花时间阅读。如果我的帖子缺少任何信息,我会更新。

mysql docker containers
  • 1 1 个回答
  • 443 Views

1 个回答

  • Voted
  1. Best Answer
    Gerald Schneider
    2020-11-06T00:24:46+08:002020-11-06T00:24:46+08:00

    常见的方法是仅在需要时指定初始化。

    不要RUN tar -xvzf /var/lib/datafile.tar.gz直接放入您的 Dockerfile,而是将其放入您添加到容器中的 shell 脚本中,例如/opt/mysql-bootstrap.sh.

    然后,当您第一次在主机上创建容器时,使用该脚本运行 docker。

    docker run --rm -v /path/to/var/lib/mysql:/var/lib/mysql \
        --name my-mysql-bootstrap my-mysql:latest /opt/mysql-bootstrap.sh
    

    --rm初始化脚本运行后将删除容器。之后,创建保持不变的容器:

    docker run -v /path/to/var/lib/mysql:/var/lib/mysql \
        --name my-mysql my-mysql:latest
    
    • 0

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve