【发布时间】:2017-08-24 09:09:13
【问题描述】:
我有一个 MariaDB Docker 容器,我想借助 bash 脚本自动访问它。
我正在使用 Docker 撰写:
version: '3'
services:
drupal:
image: jonasvbogaert/php-docker:${IMAGE_VERSION}
container_name: drupalenv
ports:
- 8080:80
volumes:
- /var/www/html/
restart: always
environment:
DRUPAL_SITE_NAME: Drupal
DRUPAL_USER: admin
DRUPAL_PASS: admin
mariadb:
image: mariadb:latest
container_name: mariadbenv
restart: always
ports:
- 3036:3036
depends_on:
- drupal
environment:
MYSQL_ROOT_PASSWORD: ""
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
MYSQL_DATABASE: drupal`
第一个命令是潜入容器中(工作正常):
docker exec -it mariadbenv bash
但是第二个:
mysql
输出如下错误:
ERROR 1045 (28000): Access denied for user 'jonasvb'@'localhost' (using password: NO)
the input device is not a TTY
当我自己输入“mysql”时,它可以工作。
这是我使用的脚本:
function main () {
getUserInput
}
function fireDocker () {
if [ $DRUPAL_VERSION = "7" ]; then
IMAGE_VERSION="drupal7"
export IMAGE_VERSION
docker-compose up -d
mountDump
else
IMAGE_VERSION="drupal8"
export IMAGE_VERSION
docker-compose up -d
mountDump
fi
}
function getUserInput () {
echo "Enter Drupal version (7 or 8)"
read DRUPAL_VERSION # Read
fireDocker $DRUPAL_VERSION
}
function mountDump(){
docker exec -it mariadbenv bash
mysql
}
main
编辑
它保持这样。
【问题讨论】:
-
删除
t。 -
删除了“t”,但现在它继续执行(没有输出)。
-
如何执行
bash -c mysql -
你到底想用mysql命令做什么?您需要手动执行某些操作,或者您想自动执行某些操作?
-
与@123 答案相同的结果。