linux - 使用脚本文件没有这样的文件或目录

标签 linux bash docker

当我启动 mysql 时,我收到“没有这样的文件或目录”,即使该文件存在于正确的目录中。

脚本:

#!/bin/bash

/usr/bin/docker exec -i mysql /bin/bash <<EOF
mysql -uroot -ppasswd 
CREATE DATABASE theDB CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES on theDB.* to user@'%' IDENTIFIED BY 'passwd';
FLUSH PRIVILEGES;
EOF

docker.yml:

version: "2"
services:
  mysql:
    image: mysql:latest
    restart: always
    container_name: mysql
    environment:
      -  MYSQL_ROOT_PASSWORD=passwd
    volumes:
      -  /temp/mysql_cnf:/etc/mysql/mysql.conf.d
    ports:
      -  3306:3306
    command: /bin/sh -c "chmod +x /home/user/mysql-container/thescript.sh && /bin/sh /home/user/mysql-container/thescript.sh"

~

最佳答案

乍一看,我怀疑这是因为您的内联段被解释为多个命令。尝试添加“\”来抑制 EOL:

/usr/bin/docker exec -i mysql /bin/bash <<EOF
mysql -uroot -ppasswd  \
CREATE DATABASE theDB CHARACTER SET utf8 COLLATE utf8_general_ci; \
GRANT ALL PRIVILEGES on theDB.* to user@'%' IDENTIFIED BY 'passwd'; \
FLUSH PRIVILEGES; 
EOF

关于linux - 使用脚本文件没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43340101/

相关文章:

amazon-web-services - 如何通过 Elasticbeanstalk 配置文件(使用 Docker)访问环境变量?

docker - GitLab 部署 token 在 EC2 Ubuntu 18.04 AMI 上失败,其他任何地方都没有

node.js - 将我的 Express docker 容器暴露给全世界有困难

php - 如何将 pid 从一个 PHP 进程传递到另一个?

linux - 补充模式

node.js - 在 Linux 网格服务器中安装 Node

linux - 在 bash 脚本中编码字符串的 URL

linux - Nvidia-docker 将文件夹添加到容器

python - 有哪些进行机器间锁定的好方法?

linux - Grep:复制包含特定文本的链接