2016-09-19 19 views
0

現在、私はWebページ(主にPHP)をホストするDockerコンテナを持っています。現在、データベースはAWS上のサーバーに格納されています。開発のために、私はDockerコンテナにローカルデータベースを作成したいと思います。私はいくつかのグーグルグーグルをして、それはほとんどの人がmysqlをホストするための完全な別のコンテナを作成することをお勧めしているようだ。これは開発用のデータベースに過ぎないので、別のコンテナを設定してMySQLをWebページをホストするコンテナに直接置くことはできませんか?これを行うために、私はMySQLサーバをインストールしようとしました:Dockerコンテナ内のMySQL

sudo apt-get install mysql-server 

Mysqlはこれをうまくインストールしました。それから私は、MySQLの対話型シェルを実行しようとした:

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 Kum yea、それは質問 –

+0

のごめんなさい@ tyler-hilbertのエラーで非常に遅れているコマンドです。私は朝の一見を持っています。 –

答えて

3

実際に別のMySQLコンテナを設定する作業はありません。本当の努力は既存のコンテナの中にそれをインストールすることです。

ドッカーの作成ファイルを作成し、アプリケーションとデータベースのコンテナを定義することをお勧めします(ほとんどの場合、既にインストールされているはずです)。

ファイル]ドッキングウィンドウ-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 

これは、devの目的のため、意図的にルートパスワードなしで、あなたのアプリケーションコンテナと別のMySQLコンテナを持ち上げます。 は今、あなたはドッキングウィンドウを使用して、この

mysql -h db -u root 

のようなアプリのコンテナからMySQLサーバにアクセスすることができますが、簡単にセットアップ複雑な環境をすることができます構成します。プロダクション環境やその他のテスト環境にデプロイするときは、Dockerファイルを変更する必要はありません。

1

サービスごとに別々のコンテナを用意することは多くの賛同者があります。 同じコンテナにphp + apache + mysqlを置くには、https://github.com/tutumcloud/lampのような画像を見つけたり、Dockerfileから直接ビルドする必要があります。

しかし、ある日、DBストレージエンジンをMysqlからPerconaまたはMariaに切り替えることを決めた場合、またはアプリケーションにMemcached/Redisを使用したいと考えてみてください。あなたのサービスが別のコンテナとしてあれば、上記のいずれの問題も発生しません。

関連する問題