【问题标题】:adding a command docker image添加命令泊坞窗图像
【发布时间】:2016-02-28 04:52:37
【问题描述】:

我已经使用这些步骤构建了一个图像:

下载管理员包

wgethttps://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 包的方法吗?

可以缩小这张图片的大小吗?

【问题讨论】:

  • 诀窍是使用CMD ["/usr/sbin/apache2 -D FOREGROUND"]之类的东西在非守护程序模式下运行apache2,或者从hub.docker.com/_/httpd之类的Apache docker镜像开始,而不是ubuntu基础镜像。

标签: docker dockerfile


【解决方案1】:

您所做的是打开一个交互式 bash 会话并尝试启动一个服务器。

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

最好使用PHP docker image:

FROM php:5.6-apache

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

然后,如果需要,您仍然可以使用以下命令打开 bash 会话:

docker exec -it <yourContainer> bash

【讨论】:

  • 我更改了基础镜像。但现在我无法包含所需的包。
  • @shantanuo 你得到什么错误?不要忘记有了这个新的基础镜像,你不必再包含 php 包了。
  • 图像构建正确。但我在应用程序中遇到错误:所有受支持的 PHP 扩展(PgSQL、PDO_PgSQL)都不可用。
  • @shantanuo 如果您在安装了 php 的机器上,您会键入什么命令来安装这些扩展?将这些命令作为 RUN 指令添加到 Dockerfile 中。
  • apt-get install php5-pgsql 适用于 ubuntu 基础镜像,但不适用于 php:5.6-apache
猜你喜欢
  • 2017-09-04
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 2018-12-15
  • 1970-01-01
  • 2017-05-06
相关资源
最近更新 更多