gpt4 book ai didi

mysql - 我可以使用 fig 在 docker 中初始化持久数据库吗?

转载 作者:行者123 更新时间:2023-11-29 01:02:59 25 4
gpt4 key购买 nike

我正在尝试使用图自动安装和运行一组链接的 docker 容器。配置由一个运行 RStudio 的容器链接到一个运行 MySQL 的容器组成,这样我就可以从 RStudio 查询 MySQL 数据库。

第一次运行时,我想从基本 MySQL 镜像创建 MySQL 容器,并用用户和数据库填充它。从命令行,是这样的:

#Get the latest database file
wget -P /tmp http://ergast.com/downloads/f1db.sql.gz && gunzip -f /tmp/f1db.sql.gz

#Create the database container with user, password and database
docker run --name ergastdb -e MYSQL_USER=ergast -e MYSQL_ROOT_PASSWORD=mrd -e MYSQL_DATABASE=f1db -d mysql

#Populate the database
docker run -it --link=ergastdb:mysql -v /tmp:/tmp/import --rm mysql sh -c 'exec mysql -h$MYSQL_PORT_3306_TCP_ADDR -P$MYSQL_PORT_3306_TCP_PORT -uergast -pmrd f1db < /tmp/import/f1db.sql'

#Fire up RStudio and link to the MySQL db
docker run --name f1djd -p 8788:8787 --link ergastdb:db -d rocker/hadleyverse

如果我能获得预加载数据的数据库图像,我想像下面的 fig.yml 脚本这样的东西可以链接元素?

gdrive:
command: echo created
image: busybox
volumes:
- "~/Google Drive/shareddata:/gdrive"

dbdata:
image: mysql_preloaded
environment:
MYSQL_USER=ergast
MYSQL_ROOT_PASSWORD=mrd
MYSQL_DATABASE=f1db

rstudio:
image: rocker/hadleyverse
links:
- dbdata:db
ports:
- "8788:8787"
volumes_from:
- gdrive

我的问题是,我可以使用一次性无花果步骤来创建 dbdata 容器,然后挂载一个持久卷,链接到它并初始化数据库,大概是初始的一部分搞定。如果我随后启动和停止容器,我不想再次运行数据库初始化步骤,只需链接到包含我之前安装的数据的数据卷容器。

我还注意到 MySQL docker 镜像看起来支持任意 datadir 定义 ( Update entrypoints to read DATADIR from the MySQL configuration directly instead of assuming /var/lib/docker )。据我了解,MySQL 镜像的当前定义阻止了在数据库容器中安装(并因此持久化)数据库内容。我想这可能使创建 mysql_preloaded 图像成为可能,但我不认为最新版本的 MySQL docker 脚本已经被推送到 dockerhub,我不能完全思考我的方式那么无花果如何能够利用这种替代途径?

最佳答案

一些选项:

  1. 编辑 fig.yml 以运行不同于默认图像命令/入口点的自定义命令。

    来自 http://www.fig.sh/yml.html (例子):命令:bundle exec thin -p 3000

  2. 在本地启动容器,对其进行修改,然后将其作为新镜像提交。

  3. 修改 MySQL 镜像 docker-entrypoint.sh 文件以执行自定义初始化。

    https://github.com/docker-library/mysql/blob/567028d4e177238c58760bcd69a8766a8f026e2a/5.7/docker-entrypoint.sh

关于mysql - 我可以使用 fig 在 docker 中初始化持久数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28227755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com