Apache服务镜像的创建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/carson0408/article/details/88903445

        Docker中创建支持SSH服务的镜像一文中讲述了如何利用Dockerfile创建镜像,通过该文的步骤,创建了sshd:dockerfile的镜像,如下图所示,本文所要创建的Apache服务的镜像,则是以sshd:ubuntu14镜像为基础镜像的。但是值得注意的是,如果按照上文以ubuntu18.04创造镜像后续则会报错,而使用ubuntu14.04为基础镜像则可以解决包依赖不兼容的问题,具体细节下文会介绍。

        其实Apache服务的镜像创建步骤与上文创建SSH服务的镜像的创建的步骤基本相同,核心都是Dockerfile和run.sh文件,只是文件内容可能根据实际服务要求的功能而定。以下通过分步式讲解来讲述Apache服务镜像创建的详细过程。

1.创建总工作目录以及核心文件

首先创建一个apache_service工作目录,并在目录中创建Dockerfile文件、run.sh文件和sample目录

mkdir apache_service && cd apache_service
touch Dockerfile run.sh
mkdir sample

2.Dockerfile内容

FROM sshd:ubuntu14

MAINTAINER carson [email protected]
#设置环境变量,所有操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive

#安装
RUN apt-get -yq install apache2 && rm -rf /var/lib/apt/lists/*

#注意这里要梗概系统的时区设置,因为在web应用中经常会用到时区这个系统变量
RUN echo "Asia/Shanghai" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata

#添加脚本,并设置权限,这会覆盖之前放在这个位置的脚本
ADD run.sh /run.sh
RUN chmod 755 /*.sh

#添加一个示例的web站点,删掉默认安装在apache文件下面的文件,并将添加的示例用软链接链接到/var/www/html目录下面
RUN mkdir -p /var/lock/apache2 && mkdir -p /app && rm -fr /var/www/html && ln -s /app /var/www/html
COPY sample/ /app


#设置apache相关的变量
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_SERVERADMIN admin@localhost
ENV APACHE_SERVERNAME localhost
ENV APACHE_SERVERALIAS docker.localhost
ENV APACHE_DOCUMENTROOT /var/www


EXPOSE 80

WORKDIR /app

CMD ["/run.sh"]

3.在sample中添加index.html

根据以下指令创建index.html文件

cd ~
cd apache_service/sample
touch index.html
vim index.html

index.html

<!DOCTYPE html>
<html>
        <body>
                <p>hello,carson!</p>
                <p>welcome to Apache</p>
        </body>
</html>

4.run.sh脚本,用于启动SSH和启动Apache服务

cd ~
cd apache_service
vim run.sh

run.sh脚本内容

#!/bin/bash
/usr/sbin/sshd & exec apache2 -D FOREGROUND

5.创建镜像

sudo docker build -t apache:service .(Dockerfile文件路径)

6.测试

sudo docker run -d -p 49172:80 apache:service
sudo apt-get install curl
curl 127.0.0.1:49172

7.总结

        这里主要总结在搭建apache服务过程中碰到一个十分棘手的问题,并且花了很长时间才解决。问题如下:

 这个问题我百度了很久也试了一些方法,始终解决不了,这属于依赖版本兼容性的问题,但是网上的方法即使错误是一样的也无法解决。后来我开始想到是基础镜像的版本有问题,我之前最基础的ubuntu版本是18.04,可能版本过高,一直无法实现,后来我把基础Ubuntu镜像改成14.04,结果问题就解决了。

猜你喜欢

转载自blog.csdn.net/carson0408/article/details/88903445