【问题标题】:Dockerfile - deploy mysql dump in entrypointDockerfile - 在入口点部署 mysql 转储
【发布时间】:2023-03-09 11:52:01
【问题描述】:

是否可以在入口点连接到外部容器并将数据库转储上传到它?

我总是得到 web_1 exited with code 0 在这一行执行:mysql -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE

但是,我可以在创建容器后执行 docker exec -it bash,在那里执行 install-sampledata 并且它可以工作

我有这样的 docker-compose

version: '2.1'

services:
  db:
    image: mysql:5.6.23
    volumes:
      - db-data:/var/lib/mysql/data
    env_file:
      - env
  web:
    build: .
    ports:
      - "8089:80"
    links:
      - db
    env_file:
      - env
    tty: true
volumes:
  db-data:  

Dockerfile

FROM alexcheng/magento

ENTRYPOINT install-sampledata

并安装示例数据文件

#!/usr/bin/env bash

cd /tmp
cp /opt/magento-sample-data-1.9.1.0.tgz .
tar xvf magento-sample-data-1.9.1.0.tgz
cp -R magento-sample-data-1.9.1.0/media/* /var/www/htdocs/media/
cp -R magento-sample-data-1.9.1.0/skin/* /var/www/htdocs/skin/
chown -R www-data:www-data /var/www/htdocs/media

mysql -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE < magento-sample-data-1.9.1.0/magento_sample_data_for_1.9.1.0.sql

【问题讨论】:

    标签: mysql docker docker-compose


    【解决方案1】:

    问题是:您的ENTRYPOINTinstall-sampledata:一个脚本将运行一个mysql 命令并...退出!
    此时容器将停止。

    如果可能,最好调用该脚本,然后调用call mysql as in the mysql Dockerfile,以便让前台进程继续运行。

    或者您可以查看multi-stage build,以便使用您的先决条件文件构建映像。


    【讨论】:

    • 为什么容器 web 会停止?据我所知,mysql 正在开发 db 容器。 Web 容器使用 mysql -h db .. 连接到它并上传转储。就这样。那么,为什么 web 容器会停止呢?
    • @freento 容器生命周期背后的所有想法是,只要它的主进程运行,它就会运行。在你的情况下,你的主要过程是一个简单的命令。一旦该命令完成,它就会停止。
    【解决方案2】:

    您在 mysql 容器中有一个入口点,允许您让容器在启动时使用您的 mysql 转储。在此处创建一个卷 /docker-entrypoint-initdb.d ,您的容器将填充您的数据库。

    【讨论】:

      【解决方案3】:

      添加

      sh -c /bin/bash

      最后到您的 install-sampledata 脚本。它将使用新的 pid 启动一个新的进程 bash。所以你的容器不会死。

      【讨论】:

        猜你喜欢
        • 2017-11-14
        • 2014-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-10
        相关资源
        最近更新 更多