在Docker容器中安装SCP

12

我目前正在尝试使用 Docker 创建 PHP 开发环境。有多个容器(nginx、php7 + 数据容器、mysql + 数据容器、phpmyadmin)运行并相互连接,目前都正常工作。为了方便其他开发人员,我正在 mysql 容器中添加一些脚本,以执行以下操作:

  • 将数据库重置为初始数据库
  • 将数据库重置为生产数据库的当前转储

我提供一个开发服务器,每 15 分钟从生产系统拉取一个实时转储,并将其放在一个众所周知的目录中。现在,我想向 mysql 容器中添加第二个脚本,基本上执行以下操作:

使用开发人员的 SSH 密钥(之前已放置在可访问的文件夹中),连接到开发机器,获取 SQL 转储并用该内容替换数据库。

我的当前问题是我不知道如何获取数据。我正在使用 mysql 镜像作为基础镜像,在容器内部没有可用的 scp 或类似命令。

问题:如何实现上述问题?我是否可以在容器中安装 scp 命令?我不想依赖于在实际主机上运行的脚本,因为使用了各种操作系统。


什么阻止你安装scp?什么阻止你只是使用ssh <dev-machine> "mysqldump -u<user> -p<password> mydb" > mydb.sql - Adam
我在容器内既没有scp也没有ssh。我该如何在Docker容器内安装它们? - Daniel
2个回答

21

将以下内容添加到您的 Dockerfile 中:

RUN apt-get update && apt-get -y install openssh-client


openssh-clients 对我有效,请注意 openssh-clients 中的 's'。 - Javed Sayyed
@Javed 你可能使用的是CentOS或Red Hat,所以要使用yum而不是apt-get。请参考下一个答案。 - ᴠɪɴᴄᴇɴᴛ

3

对于CentOS和Red Hat,将以下行添加到您的Dockerfile中(确保USER仍然/再次为root)。

RUN yum update -y && yum install -y openssh-clients

不,终止的s不是打错了;与Ubuntu/Debian世界形成对比,软件包名称是复数词。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接