Docker 用Dockerfile部署Apache网站,面试官版java面试小册

v0.1: digest: sha256:20337cdfd55de2cd1b87f796661535d6c97e6b837c03cb1390efe01a43cca342 size: 954

基于Alpine 编写Apache的Dockerfile(精简版)

================================================================================================

//创建apache服务的dockerfile文件目录

[root@localhost ~]# mkdir httpd/files -p

//上传源码包

[root@localhost ~]# ls httpd/files

apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.51.tar.gz

//项目结构

[root@localhost ~]# tree

.

|-- anaconda-ks.cfg

`-- httpd

|-- Dockerfile

`-- files

|-- apr-1.7.0.tar.gz

|-- apr-util-1.6.1.tar.gz

|-- httpd-2.4.51.tar.gz

`-- install.sh

2 directories, 6 files

//添加脚本权限

[root@localhost ~]# touch httpd/files/install.sh

[root@localhost ~]# chmod +x httpd/files/install.sh

[root@localhost ~]# ll httpd/files/install.sh

-rwxr-xr-x. 1 root root 1444 Dec 10 18:37 httpd/files/install.sh

//编写dockerfile

[root@localhost ~]# vim httpd/Dockerfile

[root@localhost ~]# cat httpd/Dockerfile

FROM alpine

LABEL MAINTAINER=‘1314444 123@qq.com’

#定义变量

ENV apr_version 1.7.0

ENV apr_util_version 1.6.1

ENV httpd_version 2.4.51

#环境变量

ENV PATH /usr/local/apache/bin:$PATH

#把需要安装apache的源码包传输到/tmp/下

COPY files /tmp/

#运行安装脚本(alpine这个系统不支持/bin/bash)

RUN /tmp/install.sh

#暴露端口号

EXPOSE 80 443

#安装路径

WORKDIR /usr/local/apache

#传递给ENTRYPOINT的参数

CMD [“-D”,“FOREGROUND”]

#主程序

ENTRYPOINT [“httpd”]

//脚本内容

[root@localhost ~]# cat httpd/files/install.sh

#!/bin/sh

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

apk update

apk add --no-cache -U openssl-dev pcre-dev expat-dev libtool libc-dev gcc make

adduser -S -H -s /sbin/nologin apache

cd /tmp/

tar xf apr-${apr_version}.tar.gz

tar xf apr-util-${apr_util_version}.tar.gz

tar xf httpd-${httpd_version}.tar.gz

cd apr-${apr_version}

sed -i ‘/ R M " RM " RM"cfgfile"/d’ configure

./configure --prefix=/usr/local/apr && \

make -j $(nproc)&& \

make install && \

cd …/apr-util-${apr_util_version} && \

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && \

make -j $(nproc) && \

make install && \

cd …/httpd-${httpd_version} && \

./configure --prefix=/usr/local/apache \

–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 -j $(nproc)&& \

make install && \

apk del gcc make

sed -i ‘/#ServerName/s/#//g’ /usr/local/apache/conf/httpd.conf

rm -rf /tmp/* /var/cache/*

//制作镜像

[root@localhost ~]# docker build -t httpd:v0.1 httpd

Sending build context to Docker daemon 11.53MB

Step 1/12 : FROM alpine

—> c059bfaa849c

Step 2/12 : LABEL MAINTAINER=‘1314444 123@qq.com’

—> Using cache

—> b3a3cce99055

Step 3/12 : ENV apr_version 1.7.0

—> Using cache

—> cfef855a83c0

Step 4/12 : ENV apr_util_version 1.6.1

—> Using cache

—> 52d47a6c077a

Step 5/12 : ENV httpd_version 2.4.51

—> Using cache

—> ecf2f6b7cc3f

Step 6/12 : ENV PATH /usr/local/apache/bin:$PATH

—> Using cache

—> e28697ef72aa

Step 7/12 : COPY files /tmp/

—> Using cache

—> 9776e1fbebeb

Step 8/12 : RUN /tmp/install.sh

—> Using cache

—> 9338e6abe92a

Step 9/12 : EXPOSE 80 443

—> Using cache

—> ffde4f04aa9b

Step 10/12 : WORKDIR /usr/local/apache

—> Using cache

—> b279cd78347c

Step 11/12 : CMD [“-D”,“FOREGROUND”]

—> Using cache

—> 047746aa7a4d

Step 12/12 : ENTRYPOINT [“httpd”]

—> Using cache

—> 052defd35663

Successfully built 052defd35663

Successfully tagged httpd:v0.1

//查看镜像

[root@localhost ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

1314444/httpd v0.2 052defd35663 4 minutes ago 79.8MB

1314444/httpd v0.1 0e0d1f4bd106 10 seconds ago 372MB

//基于新镜像创建容器

[root@localhost ~]# docker run --name httpd03 --rm -d -p 80:80 1314444/httpd:v0.2

3ba38bf8857403914f035f0ef6e24ab2200b369de6e825caf6eb2df02e3aafcb

[root@localhost ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

3ba38bf88574 1314444/httpd:v0.2 “httpd -D FOREGROUND” 5 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp httpd03

[root@localhost ~]# docker exec -it httpd03 /bin/sh

/usr/local/apache # apk add iproute2

/usr/local/apache # ss -anlt

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process

LISTEN 0 128 0.0.0.0:80 0.0.0.0:*

在这里插入图片描述

上传镜像仓库

[root@localhost ~]# docker login

Authenticating with existing credentials…

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

[root@localhost ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

1314444/httpd v0.2 052defd35663 4 minutes ago 79.8MB

1314444/httpd v0.1 0e0d1f4bd106 10 seconds ago 372MB

[root@localhost ~]# docker push 1314444/httpd:v0.2

The push refers to repository [docker.io/1314444/httpd]

b50b4eb08a17: Pushed

90442442cbcf: Pushed
8d3ac3489996: Mounted from library/alpine
v0.2: digest: sha256:2854a599479f4531c75d0b2d2232ccf93ba217707b638f392b994974a93312d6 size: 952

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

本文从基础到高级再到实战,由浅入深,把MySQL讲的清清楚楚,明明白白,这应该是我目前为止看到过最好的有关MySQL的学习笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!

MySQL50道高频面试题整理:

3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-4AQI64B1-1711657168032)]

总结

本文从基础到高级再到实战,由浅入深,把MySQL讲的清清楚楚,明明白白,这应该是我目前为止看到过最好的有关MySQL的学习笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!

MySQL50道高频面试题整理:

[外链图片转存中…(img-4AhcmcLH-1711657168032)]

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值