码头集装箱中的MySQL

问题描述:

目前我有一个托管网页(主要是PHP)的Docker容器。数据库现在存储在AWS上的服务器上。为了开发的目的,我想在Docker容器中创建一个本地数据库。我做了一些Google搜索,看起来像大多数人建议创建一个单独的容器来托管MySQL。由于这只是一个开发数据库,​​所以我想知道是否可以避免设置另一个容器并将MySQL直接放入承载网页的容器中。要做到这一点,我尝试安装MySQL服务器:码头集装箱中的MySQL

sudo apt-get install mysql-server 

Mysql安装很好做到这一点。然后我试图运行MySQL交互shell:

mysql -u root -p 

当我这样做,我得到了以下错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我可以运行在同一个码头工人容器mysql的还是我需要创建一个单独一个?

+0

hi @ tyler-hilbert,你有没有试过'mysql -u root -p'? –

+0

@Andy K um yea,这是在 –

+0

问题中给出错误的命令,很抱歉@泰勒 - 希尔伯特在这里很晚。我会看看tomo早晨。 –

真的没有努力设置单独的MySQL容器。真正的努力是将其安装在现有容器内。

我建议您创建docker组合文件并定义应用程序和数据库容器(确保您的docker组件安装在您的开发环境中,大多数情况下它应该已经安装)。

创建文件泊坞窗 - compose.yml(你可以在同一文件夹创建其中Dockerfile是你的项目,一般项目的根文件夹)与下列内容:

version: '2' 
services: 
    app: 
    image: your_app_docker_image_name 
    ...more config options depending on your project (volumes, ports, etc) 
    db: 
    image: mariadb 
    volumes: 
     - './user/db:/var/lib/mysql' 
    environment: 
     - MYSQL_ALLOW_EMPTY_PASSWORD=true 

要启动项目运行的

docker-compose up 

这将解除您的应用程序容器和单独的MySQL容器(故意没有root密码,因为这是用于开发目的)。 现在你可以从你的应用程序容器访问MySQL服务器这样

mysql -h db -u root 

使用泊坞窗组成,你可以设置复杂的环境容易。当部署到生产或其他测试环境时,您不需要更改Dockerfile。

有许多专业人士为每项服务分开容器。 要在同一容器中安装php + apache + mysql,您必须找到像这样的图像https://github.com/tutumcloud/lamp,或者从Dockerfile中自行构建它。

但试图想象有一天,您决定将您的数据库存储引擎从Mysql切换到Percona或Maria,或者您想要开始为您的应用程序使用Memcached/Redis。如果您将服务作为单独的容器进行操作,以上两种方式都不会有任何问题。