1

Magento 拡張機能をテストするために Docker コンテナーをセットアップしようとしています。次のような Dockerfile でそれを行うことを期待しています。

FROM php:5.4-apache
WORKDIR /var/www/html
ADD http://www.magentocommerce.com/downloads/assets/1.9.0.1/magento-1.9.0.1.tar.gz /var/www/html
# Other installation steps

しかし、それは失敗します:

2014/09/27 17:03:25 lchown /mnt/sda1/var/lib/docker/aufs/mnt/d5ced8f20d760458093f2993ea25ffa9a644c93d5b134e793f820f53dfc2d70d/var/www/html/tmp: not a directory

私は、OS X で boot2docker を使用していることに関係があると考えています (しばらく前に、OS X には Docker とのファイルシステム共有の問題があることを思い出しました)。

FROM php:5.4-apache
WORKDIR /var/www/html
# We should be able to use ADD to fetch a remote file, but
# something is causing that to fail (OS X Docker limitations, I guess?)
RUN ["/usr/bin/curl", "-O", "http://www.magentocommerce.com/downloads/assets/1.9.0.1/magento-1.9.0.1.tar.gz"]
RUN ["/bin/tar", "-xzf", "magento-1.9.0.1.tar.gz"]
# Other installation steps

上記を実行すると、curl は正常に実行され、エラーなしで終了しますが、結果のコンテナーにはダウンロードされたファイルが含まれていないため、ダウンストリームの tar コマンドは失敗します。

Step 2 : RUN ["/usr/bin/curl", "-O", "http://www.magentocommerce.com/downloads/assets/1.9.0.1/magento-1.9.0.1.tar.gz"]
 ---> Running in 2695c5e95f77
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 21.9M  100 21.9M    0     0   817k      0  0:00:27  0:00:27 --:--:--  842k
 ---> bb716a60c4ef
Removing intermediate container 2695c5e95f77
Step 3 : RUN ["/bin/tar", "-xzf", "magento-1.9.0.1.tar.gz"]
 ---> Running in 95cc533947c1
tar (child): magento-1.9.0.1.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
/bin/tar: Child returned status 2
/bin/tar: Error is not recoverable: exiting now
2014/09/27 17:07:47 The command [/bin/tar -xzf magento-1.9.0.1.tar.gz] returned a non-zero code: 2

中間コンテナを調べると、ファイルは実際にはありません。

$ docker run bb716a60c4ef /bin/sh -c 'pwd && ls -al'
/var/www/html
total 8
drwxr-xr-x 2 www-data www-data 4096 Sep 27 21:09 .
drwxr-xr-x 4 root     root     4096 Sep 23 11:09 ..

ファイルシステムをダウンロードして変更できるようにする Dockerfile をどのようにセットアップすればよいのでしょうか?

4

1 に答える 1

3

ここで注意すべき点がいくつかあります。Dockerfileその修正はかなり簡単なので、最初のものから始めます。

FROM php:5.4-apache
WORKDIR /var/www/html
ADD http://www.magentocommerce.com/downloads/assets/1.9.0.1/magento-1.9.0.1.tar.gz /var/www/html/
# Other installation steps

あなたはそれをキャッチしましたか?/宛先の末尾にa を追加すると、ADDコマンドはそれをフォルダーとして扱うように指示されます。コピー ルールについては、https://docs.docker.com/reference/builder/#addの 3 番目の箇条書きを参照してください。

2番目Dockerfileは、私にとってもう少し謎です。/var/www/htmlしかし、レイヤーのバージョン管理をスキップするためのボリュームとしての親イメージの設定と関係があると思われます。https://github.com/docker-library/php/blob/master/5.4/apache/Dockerfile#L46を参照してください。

于 2014-09-27T22:50:54.613 に答える