[解決済み] Dockerfileの "RUN chmod "が有効でない。
質問
他のものは全て有効になりますが、パーミッションが変更されません。何か見落としているのでしょうか?
FROM joomla:3.9-php7.2-apache
RUN apt-get update \
&& apt-get install -y apt-utils vim curl
COPY ./joomla_html /var/www/html
RUN chmod -R 765 /var/www/html/
RUN chown -R www-data. /var/www/html/
RUN chmod -R 777 /var/www/html/tmp
RUN chmod -R 777 /tmp
RUN chmod -R 777 /var/www/html/modules
RUN chmod -R 777 /var/www/html/components
RUN chmod -R 777 /var/www/html/administrator/logs
RUN chmod -R 777 /var/www/html/images
RUN chmod -R 777 /var/www/html/uploads
COPY ./docker/php.ini /usr/local/etc/php/conf.d/php-extras.ini
EXPOSE 80
これは私が得たものです、すべてのファイルのパーミッションは1000:1000です、私はそれがwww-dataにあることが必要です。
ls -la /var/www/html の出力は以下の通りです。
total 144
drwxr-xr-x 19 1000 1000 4096 May 8 18:53 .
drwxr-xr-x 1 root root 4096 May 8 02:30 ..
drwxr-xr-x 25 1000 1000 4096 May 8 18:53 components
drwxr-xr-x 6 1000 1000 4096 May 8 18:53 images
drwxr-xr-x 68 1000 1000 4096 May 8 18:53 modules
drwxr-xr-x 2 1000 1000 4096 May 8 18:53 tmp
drwxr-xr-x 2 1000 1000 4096 May 8 18:53 uploads
解決方法は?
ディレクトリが上流のボリュームとして定義されています。 https://github.com/joomla/docker-joomla/blob/d34ff24288dfb5b27a167f870f1fcca56077be78/php7.2/apache/Dockerfile#L64
VOLUME /var/www/html
ボリュームはRUNコマンドで変更することはできません。ボリュームを持つ一時的なコンテナで起動し、ボリュームではなくコンテナへの変更のみが保存されます。
上流のレポに、Dockerfile からボリューム定義を削除するようにイメージを変更するように頼んでみてはいかがでしょうか。あるいは、上流のレポを引っ張ってきて、ボリュームを除いたベースイメージの独自のバージョンをビルドすることもできます。どちらも、後でそのディレクトリにボリュームがある状態でコンテナを実行することを妨げるものではありません。
そうでない場合、イメージを拡張してRUNコマンドで変更を加えたい場合は、別のディレクトリにファイルを保存する必要があります。また、コンテナ起動時にこれらのファイルを /var/www/html にコピーするエントリーポイントを用意することも可能です。
また、最初のステージでパーミッションを修正し、リリースステージでファイルを直接ボリュームにコピーする、マルチステージビルドを検討することも可能です。お気づきのように、COPYはまだボリュームで動作します。一時的なコンテナで実装されているわけではないので、イメージファイルシステムに直接ファイルを配置することができます。
関連
-
[解決済み】docker: ドライバがエンドポイントウェブサーバの外部接続のプログラミングに失敗しました。
-
[解決済み] Dockerイメージを1つのコンテナにまとめる方法はありますか?
-
Docker npm getaddrinfo EAI_AGAIN registry.npmjs.org registry.npmjs.org:443
-
docker encountered problem 4: yaml: line 1: mapping values are not allowed in this context.
-
Docker mount host directory Docker access Permission denied 解決策
-
[解決済み] Dockerfileの'COPY'と'ADD'コマンドの違いは何ですか?
-
[解決済み] DockerfileのCMDとENTRYPOINTの違いは何ですか?
-
[解決済み] Dockerfileにコメントを入れるにはどうしたらいいですか?
-
[解決済み] DockerfileのRUNとCMDの違いについて
-
[解決済み】Dockerfileにイメージ名を設定する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Dockerエラー:無効な参照形式:リポジトリ名は小文字でなければならない
-
[解決済み】docker-compose.ymlでdocker execを実行する方法
-
[解決済み】Dockerのビルドコンテキスト外のファイルをインクルードする方法とは?
-
[解決済み】デーモンからのエラー応答:getsockopt: 接続が拒否された
-
[解決済み] ドッカーコンテナ : iptables を実行中です。その名前のチェーン/ターゲット/マッチがない
-
[解決済み] Docker - デーモンからのエラー応答:クライアントはサーバーよりも新しいです。
-
httpコード中にdocker registry apiのインタラクションを呼び出す コード詳細
-
(Kubernetes)k8sのdockerインストール入門
-
Centos7 5つのステップでDockerをインストールし、公式Dockerイメージにアクセスできない問題を解決します。
-
ドッカーコンテナの状態がExitと表示される(1)