我对Docker以及与之相关的一切都是全新的。在上学期中,我使用mysql Workbench在本地构建mysql数据库,并将Java项目连接到该数据库。今年,我需要在Docker容器中运行它。我已经从GitHub中提取了Dockerfile,并且正在使用Portainer来管理Docker。
我的老师想要以下内容: 他希望我将代码放入他为我创建的存储库中 然后,他想拉我的项目,该项目应该包括一个Dockerfile,这样他就不需要手动重建我的mysql数据库。
那么我该怎么做?我需要更改mysql Dockerfile吗?还是我应该使用默认值,然后在我的javacode中初始化我的数据库?
这是我在stackoverflow上的第一篇文章,我的编程水平不是那么高(只有2年Java经验),因此,如果我能为您提供更多信息,请告诉我。我希望这是在此处发布问题的正确方法。
感谢所有帮助我的人!
招财,卢西奥
答案 0 :(得分:0)
您还需要将sql
文件放置在GitHub上,并且应该可以从您的docker环境中访问它。
首次启动容器时,将使用 指定的名称将创建并使用提供的名称进行初始化 配置变量。此外,它将执行带有 在.sh,.sql和.sql.gz中找到的扩展名
/docker-entrypoint-initdb.d
。文件将按字母顺序执行 订购。 docker-hub-mysql
是的,还需要修改Dockerfile,这是示例。
这将构建基于mysql8的docker映像,将从GitHub下载sql
文件,并将初始化数据库名称classicmodels
,这意味着在启动时将执行任何有效的SQL文件。
FROM mysql:8
RUN apt update && apt install curl -y
RUN curl -0 https://raw.githubusercontent.com/Adiii717/doctor-demo-app/master/sample_database.sql > /docker-entrypoint-initdb.d/sampledb.sql
构建docker映像
docker build -t mysql8 .
运行docker容器
docker run --rm --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -it mysql8