[英]with bash, is it possible to enter commands inside a docker container
我正在嘗試查看“進入”容器后是否可以運行命令:
#!/bin/sh
# 1 - create a new user in the db for mautic
podman exec -it postal-mariadb mysql -h 127.0.0.1 -u root -p$1 <<EOF
CREATE DATABASE mauticdb;
CREATE USER 'mautic' IDENTIFIED BY /'$1/';
GRANT ALL PRIVILEGES ON mauticdb.* TO 'mautic';
FLUSH PRIVILEGES;
exit
EOF
這給了我一個錯誤: Error: container create failed (no logs from conmon): EOF
但我想也許這不是HERE DOCS
的好用處
像這樣的東西也不起作用:
echo $1 | podman exec -it postal-mariadb mysql -h 127.0.0.1 -u root -p postal-server-1 -e 'select * from deliveries limit 10;'
盡管您可能希望從 podman 命令行中刪除-t
,但這是對 here docs 的一種很好(且常見)的用法。 如果我有一個 mariadb 容器正在運行:
podman run -d --name mariadb -e MARIADB_ROOT_PASSWORD=secret docker.io/mariadb:10
然后,如果我將您的 shell 腳本放入名為createdb.sh
的文件中,針對我的環境修改為如下所示:
podman exec -i mariadb mysql -u root -p$1 <<EOF
CREATE DATABASE mauticdb;
CREATE USER 'mautic' IDENTIFIED BY '$1';
GRANT ALL PRIVILEGES ON mauticdb.* TO 'mautic';
FLUSH PRIVILEGES;
EOF
我做了三個改變:
podman exec
命令行中刪除了-t
,因為我們在 stdin 上傳遞輸入而不是啟動交互式終端;exit
命令(交互式 mysql shell 將在到達文件結尾時退出);/'$1/'
-> '$1'
)。我可以這樣運行它:
sh createdb.sh secret
它運行沒有錯誤。 數據庫存在:
$ podman exec mariadb mysql -u root -psecret -e 'show databases'
Database
information_schema
mauticdb <--- THERE IT IS
mysql
performance_schema
sys
並且用戶存在:
$ podman exec mariadb mysql -u root -psecret mysql -e 'select user from user where user="mautic"'
User
mautic
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.