使用MySQL导入的Docker Run命令

问题描述 投票:2回答:2

我正在使用dockerode来创建和运行容器。我正在尝试将数据导入MySQL。我的代码:

docker.run('img_cwd',['mysql',
        '-h', 'localhost',
        '-u', 'user',
        `-ppassword`,
        'dbName',
        '<',
        `/tmp/21336/sql/data/import_file.sql"`],
    [process.stdout, process.stderr],
    {
        Tty: false,
        name: nameGenerator.getContainerName(),
        AttachStdin: true,
        OpenStdin: true,
        StdinOnce: true,
        HostConfig: {
            Binds: ['/C/tmp:/tmp']
        }
    })

在C:/ tmp我必须文件夹“21336”

运行我的代码后,我看到导入没有发生,docker ps命令显示:

15d405443805af1a2635e7bc456311de741352ff4ae6b1efb3d43cb10a73d62c   img_cwd             "mysql -h localhost -u user-ppassword dbName < /tmp/21336/sql/data/import_file.sql"   9 seconds ago       Exited (1) 8 seconds ago                       Import_b01k8qr29jh868vf0959cy_Data

当我使用'-it'标志启动容器并运行import命令时:

mysql -h localhost -u user-ppassword dbName < /tmp/21336/sql/data/import_file.sql

它完美地运作。

我使用的图像:

   FROM alpine:3.9 
   RUN apk update && \
        apk add --no-cache mysql-client
   CMD ["/bin/sh"]

失败的容器运行的日志显示它无法识别命令:enter image description here

enter image description here enter image description here

mysql node.js docker dockerode
2个回答
1
投票

在Linux上,<>表示从资源和Linux shell中断命令的输入输出到输入输出的2部分和其他需要传递的流。

现在使用docker命令,这两个命令是docker run -it CONTAINER mysql -h localhost -u user-ppassword dbName </tmp/21336/sql/data/import_file.sql。此外,/tmp/21336/sql/data/import_file.sql文件正在主机中查找。


1
投票

我通过创建一个脚本来解决它

#!/bin/sh

mysql -h ${1} -u ${2} -p${3} ${4} < ${5}

当我运行命令时:

docker run imageName myScript HostParam UserPram PasswordParam DBName FileName 

有用

© www.soinside.com 2019 - 2024. All rights reserved.