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

问题描述:

我想编译我自己的Apache模块,当我建立我的形象,所以我写了下面的Dockerfile。如何在dockerfile中编译apache2自己的模块?

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安装GCC或libtool的它说,这是无法找到该软件包。

我的目标是在“.so”文件中编译“.c”文件。

我需要做的apt-get update则:

apt-get install build-essential libtool 

由于码头工人图像是督促图像,它不包含开发工具。

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

对于referene,这里的httpd的层如何增加了编译器: https://github.com/docker-library/httpd/blob/master/2.4/Dockerfile