如何在dockerfile中编译apache2自己的模块?

时间:2017-06-14 13:41:13

标签: apache docker dockerfile

我想在构建图像时编译自己的Apache模块,所以我编写了以下Dockerfile。

FROM httpd:2.4.25
COPY conf/httpd.conf /usr/local/apache2/conf/httpd.conf

COPY modules/mod_example.c /usr/local/apache2/modules/mod_example.c
RUN apxs -i -a -c modules/mod_example.c

EXPOSE 80

但是我收到了一个错误:

/usr/share/apr-1.0/build/libtool --silent --mode=compile x86_64-linux-gnu-gcc -std=gnu99 -prefer-pic -DLINUX -D_REENTRANT -D_GNU_SOURCE -pthread -I/usr/local/apache2/include -I/usr/include/apr-1.0 -I/usr/include/apr-1.0 -I/usr/include -c -o mod_example.lo mod_example.c && touch mod_example.slo /usr/share/apr-1.0/build/libtool: line 1114: x86_64-linux-gnu-gcc: command not found apxs:Error: Command failed with rc=65536

我试过apt-get install gcc或libtool它说它无法找到包。

我的目标是编译" .c"文件在" .so"文件。

2 个答案:

答案 0 :(得分:0)

只需要安装gcc或者说libapr1的build-deps。您可能只是在未指定的尝试从dockerfile添加编译器时遇到问题。

对于referene,这是httpd层添加编译器的方式: https://github.com/docker-library/httpd/blob/master/2.4/Dockerfile

答案 1 :(得分:0)

我需要做一个apt-get update然后:

apt-get install build-essential libtool

由于泊坞窗图像是prod图像,因此它不包含开发工具。