我想创建一个图像,我可以复制我的文件并与我的朋友一起用于项目 我用这张图片作为镜子来指导我 https://hub.docker.com/r/tomsik68/xampp/dockerfile,但他安装得太多了,我真的很想要 xampp......
所以我无法在这里解决这个问题:
当我使用命令运行构建的映像时
docker run -t -d -p 3000:80 xampp-model
Powershell回到我身边:
95ec81d365025c0452efafe7ae91f7b50f7d469add7494c7a380bf44b8af43be
和
PS D:ProgrammingmyPortfolio> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
PS D:ProgrammingmyPortfolio> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
95ec81d36502 xampp-model "sh /startup.sh" 4 seconds ago Exited (0) 2 seconds ago
我的码头工人文件:
#image that initialize
FROM ubuntu
MAINTAINER bruno02souto@gmail.com
# Where will be downloaded xampp
RUN cd home
# update and upgrade to be available to install some features
RUN apt-get update --fix-missing
# curl is needed to download the xampp installer, net-tools provides netstat command for xampp
RUN apt-get -y install curl net-tools
# install wget to download xampp
RUN apt-get -y install wget
# download xampp
RUN wget https://www.apachefriends.org/xampp-files/7.4.7/xampp-linux-x64-7.4.7-0-installer.run
# concede permission to xampp installer
RUN chmod +x xampp-linux-x64-7.4.7-0-installer.run
# initialize xampp installer
RUN ./xampp-linux-x64-7.4.7-0-installer.run
# remove xampp installer
RUN rm xampp-linux-x64-7.4.7-0-installer.run
# back to /
RUN cd ..
# create a dir where will be all data for webpages
RUN mkdir /www
# links previous folter to htdocs (where originally stands for web service)
RUN ln -s /www /opt/lampp/htdocs/
# copy
COPY . /www
EXPOSE 80
RUN echo '/opt/lampp/xampp start' >> /startup.sh
CMD ["sh", "/startup.sh"]
和 cmds 来启动和构建我使用的
docker run -d -t -p 3000:80 xampp-model
docker build -t xampp-model .
那么,为什么状态是退出(0(?
您的startup.sh
以/usr/bin/supervisord -n
结尾,假设主管有一些东西要...监督。
我只看到 openssh 服务器,它运行sshd -D
:它不应该立即退出.
如果是这样,请将您的主管配置为在 nodaemon 模式下运行(即使-n
应该足够了,这样更安全(
我宁愿使用类似于docker-lamp
supporting_files
的脚本来显式地为 Apache 配置主管。
问题出在您使用上述内容的 Dockerfile 中,如果您检查它是否会startup.sh
它会变成
/opt/lampp/lampp start
这将在后台启动堆栈,因此您的容器将exit with status code 0
您需要添加 Github 中提到的缺失行,但不在 Dockerfile 中。
RUN echo '/opt/lampp/lampp start' >> /startup.sh
RUN echo '/usr/bin/supervisord -n' >> /startup.sh