我自己写了一个 Dockerfile,然后将其构建到一个映像中,但是当我运行该映像时,它不起作用,你能帮助我吗?
Dockerfile:
FROM ubuntu:latest
# Install XAMPP
RUN apt update && apt install -y wget && apt install net-tools
RUN rm -rf /var/lib/apt/lists/*
RUN wget -O xampp-installer https://psychz.dl.sourceforge.net/project/xampp/XAMPP%20Linux/8.2.12/xampp-linux-x64-8.2.12-0-installer.run
RUN chmod 755 xampp-installer
RUN ./xampp-installer
# Expose ports for Apache and MySQL
EXPOSE 80 3306
# Start XAMPP
CMD ["/opt/lampp/lampp", "start"]
我尝试了相关文章,但它并不能解决我遇到的问题
问题是
/opt/lampp/lampp start
启动一些后台任务然后终止。当它终止时,容器也会终止。
您需要一个持久的前台任务来保持容器运行。一种方法是使用
tail -f
监控错误日志。
FROM ubuntu:latest
RUN apt update -q && \
apt install -q -y wget net-tools && \
rm -rf /var/lib/apt/lists/* && \
wget -O xampp-installer "https://psychz.dl.sourceforge.net/project/xampp/XAMPP Linux/8.2.12/xampp-linux-x64-8.2.12-0-installer.run" && \
chmod 755 xampp-installer && \
./xampp-installer
EXPOSE 80 3306
CMD /opt/lampp/lampp start && tail -f /opt/lampp/logs/error_log
另一种选择是在
while true; do sleep 1000; done
声明末尾添加类似 CMD
的内容。
您的方法还会创建在同一容器中运行的多个服务。具体
让每个容器在单独的容器中运行可能是一个更好的主意,该容器可以由 Docker Compose 巧妙地编排。但如果您不是纯粹主义者,上述设置应该可以正常工作! 🙂