首先,我對 docker 相當陌生。但這似乎很簡單。
我正在使用這個 dockerfile。我做了一些非常基本的修改,比如安裝 openssl 和生成一些自簽名證書,這樣我就可以在 apache 中使用 ssl。這是我添加到鏈接的 dockerfile 的部分:
RUN mkdir /ssl-certs
RUN openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -subj \
"/C=../ST=../L=..../O=LAB/CN=....." \
-keyout /ssl-certs/ssl.key -out /ssl-certs/ssl.crt
RUN mkdir -p /etc/apache2/ssl/
COPY /ssl-certs/ssl.key /etc/apache2/ssl/ssl.key
COPY /ssl-certs/ssl.crt /etc/apache2/ssl/ssl.crt
但是,當我編譯它時,我得到以下輸出:
=> CACHED [ 8/19] RUN openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -subj "/C=../ST=../L=.... 0.0s
=> CACHED [ 9/19] RUN mkdir -p /etc/apache2/ssl/ 0.0s
=> ERROR [10/19] COPY /ssl-certs/ssl.key /etc/apache2/ssl/ssl.key 0.0s
=> ERROR [11/19] COPY /ssl-certs/ssl.crt /etc/apache2/ssl/ssl.crt 0.0s
------
> [10/19] COPY /ssl-certs/ssl.key /etc/apache2/ssl/ssl.key:
------
------
> [11/19] COPY /ssl-certs/ssl.crt /etc/apache2/ssl/ssl.crt:
------
這基本上告訴我 openssl 實際上沒有做任何事情,或者 docker 沒有等待 openssl 完成,這似乎不太可能。我環顧四周,似乎找不到任何有類似問題的人。任何指標表示贊賞。
uj5u.com熱心網友回復:
COPY /ssl-certs/ssl.key /etc/apache2/ssl/ssl.key
COPY /ssl.crt /etc/apache2/ssl/ssl.crt
COPY 命令嘗試/ssl-certs在主機上訪問,而不是在容器內訪問。你可以試試
RUN cp /ssl-certs/ssl.key /etc/apache2/ssl/ssl.key \
&& cp /ssl.crt /etc/apache2/ssl/ssl.crt
編輯:不管我認為這是一種不好的做法
- 將機密(私鑰)構建到容器中,而不是在運行時安裝機密
- 創建非確定性構建(生成新的隨機私鑰)
我猜或者更希望它是為了開發/教育目的,但是在做 ssl 時,讓我們正確地做,即使是自簽名證書
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/353068.html
