2017-06-22 51 views
1

我想要一个为它的效果运行命令的docker容器,然后在我再次运行它之前停止它是很好的。如何从Docker容器中运行任意MySQL命令?

我只是想只运行此,删除过期行:

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 

而且我已经尝试了很多排列,但是,我真的迷失了。

任何意见什么我的Dockerfiledocker 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 
+0

您所做的一切会产生什么结果?对我来说看起来很合理。 – johnharris85

+0

那么,有什么错误?您不会发布任何日志或输出。我们不知道问题是什么。如果您可以编辑问题以提供更多输出和调试信息,我可以改进我的答案。 –

回答

1

你并不需要建立一个像做T他的。您可以在官方图像中使用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();" 
+0

谢谢,绝对在当地工作;在这种情况下,虽然我需要部署到ECS,所以我认为它需要成为一个泊坞窗图片 –

+0

为什么? ECS不允许您指定图像,环境变量和命令吗? –

+0

好吧,也许...我现在正在尝试,但得到'ERROR 2003(HY000):无法连接到'127.0.0.1'(111)'(我正在尝试这个本地,MySQL服务器在Docker容器中运行) –

相关问题