Memo

メモ > サーバ > 各論: Docker > ホストOSとコンテナで相互にファイルを読み書き(Linux環境)

■ホストOSとコンテナで相互にファイルを読み書き(Linux環境)
■問題の確認 以下のようにしてComposeのためのファイルを取得し、
$ git clone git@bitbucket.org:refirio/docker_wordpress.git /home/ec2-user/docker/wordpress
Dockerで起動してWordPressを実行しても、何故か日本語版にならなかった テーマを配置するためにGitにより作成された wp-content ディレクトリ内に書き込めないのが原因みたい 同じくメディアのアップロードもできない
drwxrwxr-x 4 ec2-user ec2-user 52 5月 16 17:26 wp-content
■コンテナ内で状況を確認 Dockerにより作成されたファイルは、コンテナ内では以下のように見える
# ls -l total 200 -rw-r--r-- 1 www-data www-data 420 Nov 30 2017 index.php -rw-r--r-- 1 www-data www-data 19935 Jan 1 20:37 license.txt -rw-r--r-- 1 www-data www-data 7447 Apr 8 22:59 readme.html
ec2-userにより作成されたファイルは、コンテナ内では以下のように見える idが 1000 のユーザはいないため数字表示
# ls -l .. total 4 drwxrwxr-x 5 1000 1000 4096 May 16 08:41 html
www-data は以下のIDを持つ
# id www-data uid=33(www-data) gid=33(www-data) groups=33(www-data)
■コンテナ外で状況を確認 Dockerにより作成されたファイルは、コンテナ外では以下のように見える (idが 33 のユーザはいないため数字で表示されている)
$ ll 合計 200 -rw-r--r-- 1 33 tape 420 12月 1 2017 index.php -rw-r--r-- 1 33 tape 19935 1月 2 05:37 license.txt -rw-r--r-- 1 33 tape 7447 4月 9 07:59 readme.html
■解決策 Docker: マウントしたVolumeにApacheが書き込めないとき - Qiita https://qiita.com/suin/items/3a0361102af83d0b69aa dockerでvolumeをマウントしたときのファイルのowner問題 - Qiita https://qiita.com/yohm/items/047b2e68d008ebb0f001 「ユーザ・グループを1000:1000にする」という方法で対処してみる 「1000」が決め打ちなのが気にはなる(システム以外で最初に作成されたユーザが 1000 となる)が、 Linux(EC2)とWindowsの両方で大丈夫だったのでいったん良しとする
$ vi docker/wordpress/Dockerfile … ファイルの最後に以下を追記
RUN usermod -u 1000 www-data && \ groupmod -g 1000 www-data
■再実行例 最初から実行しなおしたい場合の例 コンテナを終了し、データベースを削除し、不要なファイルを削除してからGitに一致させている
$ cd /home/ec2-user/docker/wordpress $ docker-compose down $ docker volume rm docker_compose_wordpress_data $ sudo rm -rf html $ git reset --hard origin/master

Advertisement