我尝试为 EMQ MQTT 服务器构建自定义镜像。但是脚本 update_config.sh 在 docker copmose up 期间不会执行。
Dockerfile:
FROM emqttd-docker-v2.3.5
# change configuration file
ADD update_config.sh /opt/emqttd/etc/update_config.sh
ADD ./certs/MyEMQ1.key /opt/emqttd/etc/certs/MyEMQ1.key
ADD ./certs/MyEMQ1.pem /opt/emqttd/etc/certs/MyEMQ1.pem
ADD ./certs/MyRootCA.pem /opt/emqttd/etc/certs/MyRootCA.pem
WORKDIR /opt/emqttd/etc/
#update the emqtt config file
RUN /bin/ash -c /opt/emqttd/etc/update_config.sh
update_config.sh
#!/bin/ash
cd /opt/emqttd/etc
cp ./emq.conf ./emq.conf.bak
sed -i 's|.*listener.ssl.external.keyfile.*|listener.ssl.external.keyfile = etc/certs/MyEMQ1.key|g' ./emq.conf
sed -i 's|.*listener.ssl.external.certfile.*|listener.ssl.external.certfile = etc/certs/MyEMQ1.pem|g' ./emq.conf
sed -i 's|.*listener.ssl.external.cacertfile.*|listener.ssl.external.cacertfile = etc/certs/MyRootCA.pem|g' ./emq.conf
sed -i 's|.*listener.ssl.external.verify.*|listener.ssl.external.verify = verify_peer|g' ./emq.conf
我使用 docker-compose 来构建图像。update_config.sh 脚本被复制到映像中,但未执行。
到目前为止我尝试了什么:
- 使用 COPY 而不是 ADD 来复制文件
- 尝试了
RUN /bin/ash -c /opt/emqttd/etc/update_config.sh
以下口味:RUN /bin/ash -c /opt/emqttd/etc/update_config.sh
RUN /opt/emqttd/etc/update_config.sh
RUN ./update_config.sh
- 试图在导致错误
RUN chmod +x /opt/emqttd/etc/update_config.sh
的行之前添加chmod: /opt/emqttd/etc/update_config.sh: Operation not allowed during buildRUN /bin/ash -c /opt/emqttd/etc/update_config.sh
谁能帮我?谢谢。