首页 > 其他分享 >podman用脚本和dockerfile做apache编译安装镜像(alpine版)

podman用脚本和dockerfile做apache编译安装镜像(alpine版)

时间:2022-08-31 19:02:14浏览次数:87  
标签:httpd apk -- root podman apr apache dockerfile localhost

podman用脚本和dockerfile做apache编译安装镜像(alpine版)

alpine系统是什么

Alpine Linux 是一个基于 musl libc 和 busybox 的面向安全的轻量级 Linux 发行版。

alpine系统的特点

  • 小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB;
  • 安全:面向安全的轻量发行版;
  • 简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
  • 适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。

alpine镜像下载

alpine官网

alpine国内源

清华大学:https://mirror.tuna.tsinghua.edu.cn/alpine/
阿里云:https://mirrors.aliyun.com/alpine/
网易:http://mirrors.163.com/

更换apk源

sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

alpine基础命令

apk update 		//更新最新镜像源列表
 
apk search 		//查找所以可用软件包
 
apk search -v 		//查找所以可用软件包及其描述内容
 
apk search -v ‘acf*’ 		//通过软件包名称查找软件包
 
apk search -v -d ‘docker’ 		//通过描述文件查找特定的软件包
 
apk add openssh 		//安装一个软件
 
apk add openssh openntp vim 		//安装多个软件
 
apk add --no-cache mysql-client 		//不使用本地镜像源缓存,相当于先执行update,再执行add
 
apk info 				//列出所有已安装的软件包
 
apk info -a zlib 		//显示完整的软件包信息
 
apk info --who-owns /sbin/lbu 			//显示指定文件属于的包
 
apk upgrade 				//升级所有软件
 
apk upgrade openssh 		//升级指定软件
 
apk upgrade openssh openntp vim 		//升级多个软件
 
apk add --upgrade busybox 				//指定升级部分软件包
 
apk del openssh 			//删除一个软件

服务管理

alpine没有使用fedora的systemctl来进行服务管理,使用的是RC系列命令:

rc-update 			//主要用于不同运行级增加或者删除服务

rc-status 			//主要用于运行级的状态管理

rc-service 			//主用于管理服务的状态

rc-status -a 		//列出系统所有服务

关闭系统

reboot 		//重启系统

poweroff 	//关机

podman用dockerfile做alpine编译安装镜像

创建目录并下载所需安装包

[root@localhost ~]#mkdir -p /srv/web
[root@localhost ~]# cd /srv/web/
[root@localhost web]# ls
[root@localhost web]# echo "China" > index.html
[root@localhost web]# cat index.html 
China
[root@localhost ~]# mkdir httpd
[root@localhost ~]# cd httpd/
[root@localhost httpd]# mkdir files
[root@localhost httpd]# touch Dockerfile
[root@localhost httpd]# ls
Dockerfile  files
[root@localhost httpd]# cd files/
[root@localhost files]# wget http://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz
[root@localhost files]# wget https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz
[root@localhost files]# wget https://mirrors.aliyun.com/apache/httpd/httpd-2.4.54.tar.gz
[root@localhost files]# ls
apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz

编写entrypoint.sh脚本

[root@localhost files]# vim entrypoint.sh
[root@localhost files]# cat entrypoint.sh 
#!/bin/bash

sed -i '/^ServerName/s/#//g' /usr/local/apache/conf/httpd/conf

exec "$@"

[root@localhost files]# chmod +x entrypoint.sh
[root@localhost files]# ll
总用量 11136
-rw-r--r--. 1 root root 1093896 4月   5 2019 apr-1.7.0.tar.gz
-rw-r--r--. 1 root root  554301 10月 23 2017 apr-util-1.6.1.tar.gz
-rwxr-xr-x. 1 root root      87 8月  30 21:23 entrypoint.sh
-rw-r--r--. 1 root root 9743277 6月   8 16:42 httpd-2.4.54.tar.gz

编写dockerfile

[root@localhost files]# cd ..
[root@localhost httpd]# vim Dockerfile
[root@localhost httpd]# cat Dockerfile 
FROM alpine

LABEL MANTAINER "JL [email protected]"

ENV apr_version=1.7.0 apr_util_version=1.6.1 httpd_version=2.4.54

ADD files/* /tmp/

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
    apk update && \
    adduser -SHs /sbin/nologin apache && \
    apk add --no-cache -U gcc libc-dev make expat-dev pcre-dev openssl-dev libtool && \
    cd /tmp/apr-${apr_version} && \
    sed -i '/$RM "$cfgfile"/d' configure && \
    ./configure --prefix=/usr/local/apr && \
    make && make install && \
    cd /tmp/apr-util-${apr_util_version} && \
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \
    make && make install && \
    cd /tmp/httpd-${httpd_version} && \
    ./configure --prefix=/usr/local/apache \
    --sysconfdir=/etc/httpd24 \
    --enable-so \
    --enable-ssl \
    --enable-cgi \
    --enable-rewrite \
    --with-zlib \
    --with-pcre \
    --with-apr=/usr/local/apr \
    --with-apr-util=/usr/local/apr-util/ \
    --enable-modules=most \
    --enable-mpms-shared=all \
    --with-mpm=prefork && \
    make && make install && \
    mv /tmp/entrypoint.sh / && \
    apk del gcc make && \
    rm -rf /tmp/* /var/cache/*

EXPOSE 80
WORKDIR /usr/local/apache
CMD ["/usr/local/apache/bin/httpd","-D","FOREGROUND"]
ENTRYPOINT ["/bin/bash","/entrypoint.sh"]

创建镜像

[root@localhost httpd]# cd
[root@localhost ~]# podman build -t feigeaq/httpd:v2 httpd/
[root@localhost ~]# podman images
REPOSITORY                TAG         IMAGE ID      CREATED             SIZE
localhost/feigeaq/httpd   v2          5b312457b7af  About a minute ago  128 MB
docker.io/library/alpine  latest      c059bfaa849c  9 months ago        5.87 MB

创建容器,链接外部存储,并测试

[root@localhost ~]# podman run -d --name web -p 80:80 -v /srv/web/://usr/local/apache/htdocs/:Z feigeaq/httpd:v2


[root@localhost web]# podman ps 
CONTAINER ID  IMAGE                       COMMAND               CREATED         STATUS             PORTS               NAMES
7f3dc425697b  localhost/feigeaq/httpd:v2  /usr/local/apache...  10 minutes ago  Up 10 minutes ago  0.0.0.0:80->80/tcp  web


[root@localhost ~]# curl localhost:80
China

上传镜像到dockerhub

[root@localhost ~]# podman images
REPOSITORY                TAG         IMAGE ID      CREATED         SIZE
localhost/feigeaq/httpd   v2          5b312457b7af  38 minutes ago  128 MB
docker.io/library/alpine  latest      c059bfaa849c  9 months ago    5.87 MB
[root@localhost ~]# podman push feigeaq/httpd:v2
Getting image source signatures
Copying blob 8d3ac3489996 done  
Copying blob bdb16d456f26 done  
Copying blob 796a38c423e2 done  
Copying config 5b312457b7 done  
Writing manifest to image destination
Storing signatures

标签:httpd,apk,--,root,podman,apr,apache,dockerfile,localhost
From: https://www.cnblogs.com/soap-bubble/p/16644220.html

相关文章

  • dockerfile
    目录基础结构指令fromlabelmaintainerruncmdexportenvaddcopyentrypointvolumeuserworkdironbuild创建镜像基础结构Dockerfile是一个文本格式的配置文件,用户可以使用D......
  • 3.DockerFile文件编写样例
    Base镜像(scratch):DockerHub中99%的镜像都是通过在base镜像中安装和配置需要的软件构建出来的1)编写DockerFile文件:vi/home/mydocker/Dockerfile文件,内容如下:FRO......
  • dockerfile
    目录基本结构指令FROMLABELMAINTAINERRUNCDMEXPOSEENVADDCOPYENTRYPOINTVOLUMEUSERWORKDIR基本结构Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile快速......
  • dockerfile
    目录什么是dockerfiledockerfile的基本结构dockerfile的指令创建镜像什么是dockerfiledockerfile构建镜像是以基础镜像为基础。Dockerfile是一个文本文件,内容就是用户......
  • Dockerfile
    Dockerfile目录Dockerfile基本结构指令FROMLABELMAINTAINERRUNCDMEXPOSEENVADDcopyENTRYPOINTVOLUMEUSERWORKDIR基本结构Dockerfile是一个文本格式的配置文件,用户可以......
  • 如何从零开始参与 Apache 顶级开源项目?| 墙裂推荐
    ​写在开头从2021开始,有一个很有意思的说法经常在各大技术媒体或开源论坛中出现,「开源正在吞噬一切」。不论是否言过其实,从一个行业从业者的切身感知来看,开源确实从少......
  • Dockerfile容器设置中文
    FROMcentos:7.6.1810RUNln-snf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime&&\yuminstallglibc-common-y&&\localedef-c-fUTF-8-izh_CN......
  • Apache性能监控
    Apache性能监控-虫师-博客园 https://www.cnblogs.com/fnng/archive/2012/11/11/2765463.htmllinux下通过server-status监控性能           ......
  • apache服务器启动时提示httpd: apr_sockaddr_info_get() failed for
    apache服务器启动时提示httpd:apr_sockaddr_info_get()failedfor-小!千-博客园 https://www.cnblogs.com/xiaoqian1993/p/6027907.html在RedHat Linux 5与Ce......
  • Apache与IIS的优劣对比
    对于中小企业来说建立自己的网站,对外展示自己的页面是最平常不过的事情了。目前最流行的建立WWW服务工具就要属Apache与IIS了。那么他们之间都有什么区别呢?到底哪个工具才......