Tag: mysql

Docker容器运行pipe理器过早closures

我正在使用这里描述的pipe理器运行一个有多个进程的Docker容器(来实现一个LAMP环境)。 一切工作正常,但是当我停止容器的MySQL进程不会得到正确的终止,即使我已经设置了pipe理员的pidproxy在pipe理员configuration [program:mysql] command=/usr/bin/pidproxy /run/mysqld/mysqld.pid /bin/sh -c "exec /usr/bin/mysqld_safe" 当我通过nsenter访问容器并重新启动MySQL守护进程 supervisorctl restart mysql 关机完成时不会在下次出现错误时抛出。 所以我认为主pipeconfiguration正确。 对我来说,似乎docker(我正在运行1.2.0)在mysqld仍然closures的时候终止了容器。 编辑 通过使用-e debug开关运行supervisord ,我能够debugging一些更多的细节。 closures与supervisorctl restart mysql通过nsenter supervisorctl restart mysql : DEBG fd 17 closed, stopped monitoring <POutputDispatcher at 39322256 for <Subprocess at 38373280 with name mysql in state RUNNING> (stderr)> DEBG fd 14 closed, stopped monitoring <POutputDispatcher at […]

Docker IP更改使得MySQL访问变得非常棘手

我试图locking一个MySQL用户帐户访问到一个IP地址,但似乎每次启动一个docker集装箱,IP地址的变化。 docker run -it company/my-app bash 在上面安装mysql-client apt-get update apt-get upgrade apt-get install mysql-client 现在我会连接使用: mysql -u blah -h database.host.com -p Access denied for user 'blah'@'172.17.0.63' (using password: YES) 然后,我会授予blah'@'172.17.0.63所有权限,我可以从容器访问数据库。 现在我将开始一个新的docker集装箱,重复上述步骤,我会再次得到: Access denied for user 'blah'@'172.17.0.64' (using password: YES) 每次启动Docker容器时,IP地址似乎都会增加。 我可以限制主机为%.%.%.% ,但这只是意味着任何IP地址都可以连接,而不是像我想要的那样安全。 是否有某种方式来限制只有一个docker容器或一组容器的MySQL帐户的访问?

多应用程序作为集群中的Docker容器,处理MySQL的方法

大部分有关设置Docker容器的文章似乎都是围绕着将应用程序分解成微服务并将其分配到各种容器并将其部署到集群中的想法而编写的。 我想找出最好的方法来处理为不同的客户端编写的多个不相关的应用程序的数据库(例如mySQL),部署到同一个集群中。 假设我有10个不相关的小应用程序(如wordpress),都需要访问mySQL数据库。 我可以: 将应用程序作为容器部署到群集中,仅包含应用程序代码,设置专用的mySQL服务器或Google Cloud SQL实例,并要求每个应用程序容器作为第三方服务连接到数据库。 将应用程序作为容器部署到群集中。 对于每个应用程序,还将一个单独的数据库容器部署到群集中并将两者连接起来。 将单独的数据库容器部署到群集中,并将此容器链接到群集中的各个应用程序容器。 哪种解决scheme最适合应用程序体系结构devise,哪些最适合计算机资源? 我有这样的感觉,即部署多个MySQL容器(每个应用程序一个)可能是最好的devise,但它可能不是最有效的资源,因为我们将有一堆的MySQL容器运行。

Docker:从主机使用–net = host选项访问docker容器中的mysql

我正在使用–net = host选项运行2 docker容器,因此networking是透明的(docker容器使用与主机相同的networking设备)。 docker network inspect host [ { "Name": "host", "Id": "32ddf8f58d520e49a0b3f296d6d03134b24d7c503309e1c35e04c248010aa64b", "Scope": "local", "Driver": "host", "IPAM": { "Driver": "default", "Options": null, "Config": [] }, "Containers": { "0e41eb0b07d2751db99a204a3a69a2446bf5b869150bc5741df670e56dbce670": { "Name": "sleepy_goldstine", "EndpointID": "cc8f2c4da055ae7e608c127552f67753c319aeb603234c418a0ebe8958c1025a", "MacAddress": "", "IPv4Address": "", "IPv6Address": "" }, "71de826121e7222020eec8be8b3a737f3297f8c3aa99d21f0f7016d6aca6f668": { "Name": "tender_goodall", "EndpointID": "2da0468dbaf1e6b877984cbeb6b2a775786259fec7e83eb373c1d25fe715e16f", "MacAddress": "", "IPv4Address": "", "IPv6Address": "" } […]

为什么MariaDB数据在我的Docker容器中是持久的? 我没有任何卷

我有一个安装了MariaDB的Docker容器。 我没有使用任何卷。 [vagrant@devops ~]$ sudo docker volume ls DRIVER VOLUME NAME [vagrant@devops ~]$ 现在发生了一些奇怪的事情 当我做sudo docker stop和sudo docker start ,MariaDB数据仍然存在。 我预计这个数据会丢失。 顺便说一句,当我编辑一些文件例如/etc/hosts我看到预期的行为。 重新启动后,此文件的更改将丢失。 MariaDB数据如何在没有卷的情况下持久存在? 这不应该发生吗?

Docker MySQL:创build新用户

在mysql docker hub页面中有一个关于如何创build用户的参考: MYSQL_USER, MYSQL_PASSWORD 但是,如何在docker-compose.yml文件中指定这些参数呢? 到目前为止我有: mysql: image: mysql:5.7 ports: – "3306:3306" environment: MYSQL_ROOT_PASSWORD: R00t+ 另一个问题; 我怎样才能连接到外部容器的MySQL主机? 在容器内部,我可以连接使用: $user = 'root'; $pass = 'R00t+'; $server = 'mysql'; $dbh = new PDO( "mysql:host=$server", $user, $pass );

Docker的撰写 – 如何在一个MySQL容器中引用许多模式

我试图使用两个模式到一个MySQL容器。 我有两个连接到两个不同模式的飞行服务。 Docker Compose的.yml文件如下所示: version: '2' services: mysqldb: image: mysql:5.6.26 environment: MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: – my – my_post ports: – "3306:3306" flyway-service1-i: image: mik/flyway-service volumes: – "../resources/db/migration:/migrations/ro" depends_on: – mysqldb links: – mysqldb command: migrate -url=jdbc:mysql://mysqldb:3306/mi -user=user -password=password -baselineOnMigrate=true -locations='filesystem:/migrations' flyway-service2-i: image: mialk/flyway-post-service volumes: – "../../../service2/src/main/resources/db/migration:/migrations/ro" depends_on: – mysqldb links: – […]

在Docker容器中通过脚本创build数据库时,与MySQL服务器失去连接

我正在设置一个脚本来为开发者本地机器configurationDocker环境。 脚本的一个特定部分包括创build一个临时容器与本地卷来设置我将在下一步使用的数据库。 这是脚本中使用的代码: docker run -d –name mysql_temp -v ~/dev/mysql:/var/lib/mysql/data -e MYSQL_ROOT_PASSWORD=test -p 3306:3306 centos/mysql-57-centos7:latest 脚本的下一步是这一行: mysql -u root -h 127.0.0.1 –protocol=tcp –password=test -e "CREATE DATABASE db_test;" 那么,脚本返回我这个错误: ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2 奇怪的是,如果我强制exit命令后,第一个命令,我执行第二个手,直接在terminal,它的工作,并创build我的数据库。 不知道这是怎么回事? 提前致谢,

我怎样才能将后端和前端中的wordpress与docker容器分开?

我已经使用以下命令为此创build了两个容器: docker run –detach –name=test-mysql –env="MYSQL_ROOT_PASSWORD=mypassword" mysql 并且用命令docker inspect test-mysql我可以看到容器IP地址"IPAddress": "172.17.0.20", 之后,我试图连接它与MySQL,但我得到这个错误: can't connect to MySQL server on '172.17.0.20' (60) 但如果我这样做:“docker执行-ittestingmysql的bash”我可以连接它。 如果我想连接一个WordPress的前端到这个MySQL容器,我应该怎么做? 我试图与docker run –detach –name test-wordpress –link test-mysql:mysql wordpress但不工作,我什么都没有在本地:80

MySql.Data.MySqlClient.MySqlException使用ServiceStack ORMLite

我正在与ServiceStack合作,对MySql的ORMLite提供程序进行评估,以用于.NET Core 1.1项目。 我遇到一个奇怪的问题,我不知道是什么问题,并寻找一些指导如何解决这个进一步或可能的修复。 我在一个标准的docker容器中运行.Net核心应用程序,在标准的MySql容器中运行MySql。 我已经能够成功运行MySQL并连接到工作台工具。 我不能做的是获取Web应用程序的执行代码,以成功连接到MySQL容器。 我曾尝试过各种组合。 那些IP地址或主机名是错误的我收到一个有意义的错误,说主机是未知的。 但是,在使用适合于MySQL容器的服务器名称或IP地址值的情况下,我收到一个通用的MySQLException错误。 用户名和密码是正确的。 我甚至使用root帐户来确保没有任何潜在的安全隐患。 这里是我尝试连接的地方的代码片段。 这个设置使用本地SQL数据库文件运行良好,只是我缺lessDocker或MySQL的configuration,我还没有能够隔离。 const string connectionString = "Server=3400f112c973:3306;Database=ServiceDB;Uid=root;Pwd=my-secret-pw;"; container.Register<IDbConnectionFactory>( new OrmLiteConnectionFactory(connectionString, MySqlDialect.Provider )); using (var db = container.Resolve<IDbConnectionFactory>().Open()) { if (db.CreateTableIfNotExists<TypeExample>()) { //Add seed data } }