我使用以下步骤构建了图像:

下载管理员包

wget https://www.adminer.org/static/download/4.2.4/adminer-4.2.4-en.php

mv adminer-4.2.4-en.php adminer.php

创建 docker 文件

vi dockerfile

FROM ubuntu
RUN apt-get -y install apache2 php5 php5-curl php5-cli php5-mysql php5-gd mysql-client mysql-server
RUN apt-get -y install postgresql postgresql-contrib
RUN apt-get -y install php5-pgsql
COPY adminer.php /var/www/html/
RUN chmod -R 777 /var/www/html/

建立并运行

docker build -t shantanuo / adminer1。

docker run -i -t --rm -p 80:80 --name adminer1 shantanuo / adminer1

一旦进入容器,我需要运行此命令来启动apache。

sudo服务apache2启动

如何在dockerfile中包含此命令? (为此添加CMD后,构建失败。)

还有其他(更好)的方式来安装adminer.php软件包吗?

可以缩小此图像的尺寸吗?

最佳答案

您要做的是打开一个交互式bash session ,然后尝试启动服务器。

如果您以分离模式(-d)而不是-it来启动同一图像,并让apache运行会更好。
为此,正如所评论的,您需要从httpd:2.4开始,其中:

  • 有一个Dockerfile starting by default apache
  • 在前台有一个 httpd-foreground 脚本启动apache服务器。

  • 更好的方法是使用PHP docker image:
    FROM php:5.6-apache
    

    这样,您甚至不必安装apache或php。您只需复制您的php应用程序。

    然后,如果需要,您仍然可以使用以下命令打开bash session :
    docker exec -it <yourContainer> bash
    

    08-28 18:27