在docker contain中启动mysql后插入数据

2024-04-25 19:36:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用docker在容器中启动mysql服务。容器启动后,我想通过python脚本将一些数据自动插入数据库。这是我的Dockerfile

FROM mysql:5.7

EXPOSE 3306

ENV MYSQL_ROOT_PASSWORD 123456

WORKDIR /app
ADD . /app

RUN apt-get update \
    && apt-get install -y python3 \
    && apt-get install -y python3-pip
RUN pip3 install --user -r requirements.txt
RUN python3 init.py

最后一行运行脚本以向数据库添加一些数据,但这次mysql服务尚未启动,因此在运行docker build时失败。我该怎么做?提前谢谢。在


Tags: install数据dockerrunfromdockerfile脚本数据库
1条回答
网友
1楼 · 发布于 2024-04-25 19:36:47

According to the docs,MySQL入口点将自动执行.sh.gz或{}脚本的文件。所以,创建一个脚本来执行Python脚本。如果您将此文件称为01-my-script.sh,则Dockerfile将如下所示:

FROM mysql:5.7

EXPOSE 3306
ENV MYSQL_ROOT_PASSWORD 123456
WORKDIR /app

RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip 

# Copy requirements in first, and run them (so cache won't be invalidated)
COPY ./requirements.txt ./requirements.txt
RUN pip3 install  user -r requirements.txt

# Copy SQL Fixture
COPY ./01-my-script.sh /docker-entrypoint-initdb.d/01-my-script.sh
RUN chmod +x /docker-entrypoint-initdb.d/01-my-script.sh

# Copy the rest of your project
COPY . .

你的脚本只包含:

^{pr2}$

现在,当您打开容器时,脚本将执行。使用docker logs -f <container_name>监视正在运行的容器的执行,以确保脚本正在运行。在

相关问题 更多 >