我如何从Docker容器中运行任意的MySQL命令?
我想要一个Docker容器,为它的效果运行一个命令,然后停下来,直到我再次运行它。
我只想运行这个,删除过期的行:
mysql --user=$MYSQL_USER --host=$MYSQL_HOST --database=$MYSQL_DB --password=$MYSQL_PASS -se "DELETE FROM sometable WHERE expiration < NOW();"
我试过这个:
FROM ????? ENV MYSQL_USER=$MYSQL_USER ENV MYSQL_HOST=$MYSQL_HOST ENV MYSQL_PASS=$MYSQL_PASS ENV MYSQL_DB=$MYSQL_DB ENTRYPOINT mysql --user=$MYSQL_USER --host=$MYSQL_HOST --database=$MYSQL_DB --password=$MYSQL_PASS -se "DELETE FROM sometable WHERE expiration < NOW();"
并运行它:
docker run --name some-process \ -e MYSQL_USER=$MYSQL_USER \ -e MYSQL_PASS=$MYSQL_PASS \ -e MYSQL_HOST=$MYSQL_HOST \ -e MYSQL_DB=$MYSQL_DB \ -d some-image:latest
而且我尝试了很多这样的排列,但是我真的迷失了。
任何build议什么我的Dockerfile
和docker run
命令应该看起来像运行?
编辑:
我已经尝试了很多东西,得到了太多的错误,所以我认为“修复”我的尝试是徒劳的,而只是请求“我怎么让容器运行mysql -se "DELETE ..."
“
但是,如果有帮助,这里是我得到的一些错误(我得到最频繁的第一个)
ERROR 2002 (HY000): Can't connect to local MySQL server through socket ------ ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111) ------ Error response from daemon: No such container: ------ docker: Error response from daemon: repository my-mysql-server not found: does not exist or no pull access. ------ ERROR: mysqld failed while attempting to check config ------ error: database is uninitialized and password option is not specified
你不需要build立一个图像来做到这一点。 你可以在官方镜像中使用MySQL客户端:
docker run -it -e MYSQL_PWD=yourpass mysql:5.6 mysql -h $MYSQL_HOST --port 3306 -u youruser -e "DELETE FROM sometable WHERE expiration < NOW();"