2017-01-27 4 views
1

私のコンピュータには、自分の環境を荒らさずに簡単にアクセスできるよう、古いサイト(wordpress/mysql/php、ruby 1.x/sqliteなど)がたくさんあります。 。アーカイブ目的で最も簡単なMacドッカーセットアップは何ですか?

Dockerはこのタスクの完璧な候補者のようですが、私は何度も頭を包み込み、プロフェッショナルな援助を求めていることを認識しました。

私はこのことをいじめるのに多くの時間を無駄にしており、深みでやや圧倒されています。最初は(wp/mysqlの問題の場合)、私は2つの異なるイメージ(wordpress/php oneとmysql 1)を作成しようとしていました。それらを一緒にリンクすると、私のプログラマーの心理に訴えます。 Right Way™。

しかし、私のUXの考え方が出て勝ったと私は未来が私のようにすぐに私は完了として、すべてこのドッキングウィンドウの知識を忘れてしまう(ように最も簡単な方法で作業この事を得ることに賛成して右ウェイ™を放棄していますこのタスク)は、再びそれを把握することができます。だからここ

は、私が欲しいものです:私は、エクスポートmysqlデータベースとwordpressのサイトと一緒にフォルダに置くことができるドッキングウィンドウのセットアップので、私は起動時にそのbadboy- ブーム -I'mブラウジング2005年に多くの意味を持ち、今や意味をなさない古いサイトです。

私が言っていることを知っていますか?私はこれを行うことができる、最も簡単で、将来を保証する方法は何ですか?データ/ファイルを編集したい場合にコンテナの外に保存することは可能ですか?私はMac用のDockerを使用しています。

+0

参照:https://docs.docker.com/engine/tutorials/dockervolumes/ –

答えて

1

本当にあなたが持っているすべてのサイトで正常に機能するものがほしいと思うようです。 Dockerは本来ではないので、 genericです。通常は、すべてを実行するためのツール(PHP、Rubyなど)を持つドッカーイメージはありません。あなたは通常、必要なものだけをイメージに組み込みます。

あなたが求めているもののように何かをすることはまだ可能かもしれませんが、私はあなたが正しい方向を指し示すことができると思います。 official Wordpress Dockerの画像は、あなたのWordpressサイトを実行できるはずです。あなたは実際に別のMySQLイメージを使って適切な軌道に乗っていました。これはdocker-composeで簡単に達成できます。

あなたのドッカーが作成します。

version: '3' 

services: 
    wordpress: 
     image: wordpress:4-php5.6-apache 
     ports: 
      - "8080:80" 
     volumes: 
      - ./:/var/www/html 
     environment: 
      WORDPRESS_DB_HOST: mysql 
      WORDPRESS_DB_USER: root 
      WORDPRESS_DB_PASSWORD: password 
      WORDPRESS_DB_NAME: wordpress 

    mysql: 
     image: mariadb:10.1 
     ports: 
      - "3306:3306" 
     environment: 
      MYSQL_ROOT_PASSWORD: password 
      MYSQL_DATABASE: wordpress 

それが何をするかの簡単な要約:YMLファイルには、次のようになります

  • は2つのドッカーコンテナ、Wordpressのための1とMySQLのための1つを作成します。
  • を転送は、ワードプレス容器に127.0.0.1:8080からポート80
  • マウント./でWordpressの容器に/var/www/htmlに要求します。それはあなたの現在のディレクトリからWordpressを提供することを意味します。
  • データベースに接続する方法を知るように環境変数を設定します。
  • MySQL Dockerコンテナを準備します。
  • コンテナの127.0.0.1:3306〜3306を転送します。だからmysql -u root -ppassword -h 127.0.0.1を行うことができます。あなたが提供したいWordpressのディレクトリに上記のものと同様docker-compose.ymlと呼ばれるファイルを作成する場合

さて、あなたは単にそのディレクトリ内docker-compose upを実行することができますし、コンテナ内のWordpressを実行していることでしょう。データベースダンプを復元する必要がある場合は、cat dump.sql | mysql -u root -ppassword -h 127.0.0.1 WORDPRESSとすることができます。そして、localhost:8080でサイトにアクセスできます。あなたのプロジェクトにdocker-compose.ymlのようなファイルを置くことによって、それらのためのコンテナをスピンアップするのがかなり速くなります。

今のところ、このようなStackOverflowの答えの範囲はかなり限られているので、私はこの答えでカバーしていないと思うかもしれません。しかし、Dockerについてもっと学ぶ時間を少しでも投資したいなら(これは本当に複雑ではありません)、これはあなたにとって素晴らしい解決策になるかもしれません。

+0

ありがとう、これは素晴らしいです!すべてが近づくようですが、データベースに接続しようとすると、古典的な 'ERROR 2002(HY000):ソケット経由でローカルMySQLサーバに接続できません '/tmp/mysql.sock'(2)' 。その作成ファイルに必要な設定がいくつかありますか? –

+0

MySQLは、TCPではなくlocalhostでソケットを使用しようとしています。あなたはこの 'mysql -u root -ppassword -h localhost'をやっていますか? MySQLが 'localhost'を見ると、TCPではなくmysql.sockを通して接続しようとします。 'mysql -u root -ppassword -h 127.0.0.1'を実行すると、デフォルトでTCPに設定されます。それとは別に、 '--protocol = TCP'で強制する必要があります。それでも動作しない場合は、Mac上のDockerで同様の問題を抱えている人のためにグーグルで試してみてください。私はLinux上にあり、127.0.0.1のトリックが私の仕事です。 Dockerは '127.0.0.1:3306'をコンテナに転送しています。しかし、 '/ tmp/mysql.sock'ではありません。 – mkasberg

+0

もう一度ありがとう!これは私をそこに辿り着き、混乱をなくしました。今私は古いWordPressの問題に取り組んでいますが、コンテナは必要に応じて動作しています。 –

0

Docker for MacとたくさんのPHPファイル(Wordpress、Symfony)がマウントされたリソースdon't like each other ...ドッカーシンクといくつかの他のトリック(since databases may be slow as well)でいくつかの巧妙なトリックを作りたくない場合。

私の提案 - 簡単に火をつけて忘れてしまったら、すべてのサイトに役立つ仮想マシンをセットアップするためにVagrantを使用することですか? puphpet.comを使用すると、このマシンを簡単にクリックできます。インポートするSQLファイルをマークする可能性さえあります... config.ymlファイルを探していますあなたはフィーチャーに追加のホストを追加する方法を知っています。

サイトごとに古いPHPや環境/設定が必要な場合に問題が発生します。残念ながら、Docker for Macは、今すぐ絶対防御ではありません。

関連する問題