基于容器部署web站点

基于容器部署web站点

1.安装docker

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
[root@localhost yum.repos.d]# sed -i 's@https://download.docker.com@https://mirrors.tuna.tsinghua.edu.cn/docker-ce@g' docker-ce.repo
[root@localhost yum.repos.d]# dnf -y install docker-ce

2.配置镜像加速器

[root@localhost ~]# sudo mkdir -p /etc/docker
[root@localhost ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://t82gwevc.mirror.aliyuncs.com"]
> }
> EOF
{
  "registry-mirrors": ["https://t82gwevc.mirror.aliyuncs.com"]
}
[root@localhost ~]# sudo systemctl daemon-reload
[root@localhost ~]# sudo systemctl restart docker
[root@localhost ~]# 

3.拉取一个centos8的镜像文件

[root@localhost ~]# docker pull centos:8
8: Pulling from library/centos
a1d0c7532777: Pull complete 
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:8
docker.io/library/centos:8
[root@localhost ~]# 
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       8         5d0da3dc9764   10 months ago   231MB
[root@localhost ~]# 


4.用centos生成一个容器并进去

[root@localhost ~]# docker run -it --name httpd centos:8 /bin/bash
[root@5bd55a8c19ab /]# 

5.在容器中修改阿里云的yum源和epel源

[root@localhost ~]# docker run -it --name httpd centos:8 /bin/bash
[root@5bd55a8c19ab /]# cd /etc/yum.repos.d/
[root@5bd55a8c19ab yum.repos.d]# rm -rf *
[root@5bd55a8c19ab yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2495  100  2495    0     0  33266      0 --:--:-- --:--:-- --:--:-- 33266
[root@5bd55a8c19ab yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@5bd55a8c19ab yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
Failed to set locale, defaulting to C.UTF-8
CentOS-8.5.2111 - Base - mirror
[root@5bd55a8c19ab yum.repos.d]# sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@5bd55a8c19ab yum.repos.d]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
[root@5bd55a8c19ab yum.repos.d]# ls
CentOS-Base.repo   epel-testing-modular.repo  epel.repo
epel-modular.repo  epel-testing.repo
[root@5bd55a8c19ab yum.repos.d]# 

6.下载apache的包,并复制到容器中

[root@localhost ~]# wget https://mirrors.aliyun.com/apache/httpd/httpd-2.4.54.tar.gz http://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz http://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg  apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz
[root@localhost ~]# docker cp httpd-2.4.54.tar.gz httpd:/usr/src/
[root@localhost ~]# docker cp apr-1.7.0.tar.gz httpd:/usr/src/
[root@localhost ~]# docker cp apr-util-1.6.1.tar.gz httpd://usr/src/
[root@5bd55a8c19ab ~]# ls /usr/src
apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  debug  httpd-2.4.54.tar.gz  kernels
[root@5bd55a8c19ab ~]# 
下载相关依赖包
[root@5bd55a8c19ab ~]# dnf -y install wget vim openssl-devel pcre-devel expat-devel libtool libxml2-devel gcc gcc-c++ make
创建一个apache用户

7.解压编译安装http、apr、apr-util

[root@5bd55a8c19ab ~]# cd /usr/src
[root@5bd55a8c19ab src]# tar xf apr-1.7.0.tar.gz 
[root@5bd55a8c19ab src]# tar xf apr-util-1.6.1.tar.gz 
[root@5bd55a8c19ab src]# tar xf httpd-2.4.54.tar.gz 
[root@5bd55a8c19ab src]#
编译安装apr
[root@5bd55a8c19ab ~]# cd /usr/src
[root@5bd55a8c19ab src]# cd apr-1.7.0
[root@5bd55a8c19ab apr-1.7.0]# vi configure
[root@5bd55a8c19ab apr-1.7.0]#
 cfgfile=${ofile}T
    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
   #$RM "$cfgfile"
[root@5bd55a8c19ab apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@5bd55a8c19ab apr-1.7.0]# make && make install
编译安装apr-util
[root@5bd55a8c19ab apr-1.7.0]# cd ..
[root@5bd55a8c19ab src]# cd apr-util-1.6.1
[root@5bd55a8c19ab apr-util-1.6.1]# 
[root@5bd55a8c19ab apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@5bd55a8c19ab apr-util-1.6.1]# make && make install
编译安装httpd
[root@5bd55a8c19ab httpd-2.4.54]# cd httpd-2.4.54
[root@5bd55a8c19ab httpd-2.4.54]# ./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-rpm=prefork
[root@5bd55a8c19ab httpd-2.4.54]# make && make install

8.配置环境变量和创建头文件

[root@5bd55a8c19ab ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/apache.sh
[root@5bd55a8c19ab ~]# source /etc/profile.d/apache.sh  
[root@5bd55a8c19ab ~]# ln -s /usr/local/apache/include/ /usr/include/apache
[root@5bd55a8c19ab ~]# vi /usr/local/apache/conf/httpd.conf 
[root@5bd55a8c19ab ~]# 
ServerName www.example.com:80
[root@5bd55a8c19ab ~]# apachectl start
[root@5bd55a8c19ab ~]# 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@5bd55a8c19ab ~]# 
[root@5bd55a8c19ab ~]# curl 127.0.0.1
<html><body><h1>It works!</h1></body></html>
[root@5bd55a8c19ab ~]#

9.制作httpd镜像

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
5bd55a8c19ab   centos:8   "/bin/bash"   53 minutes ago   Up 53 minutes             httpd
[root@localhost ~]# docker commit -p -c 'CMD ["/usr/local/apache/bin/httpd","-D","FOREGROUND"]' 5bd55a8c19ab nie/httpd:v1.1
sha256:f814a5a324373c9e88eb2121744cead141133b140be21be267b36e4e1466b71c
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nie/httpd    v1.1      f814a5a32437   9 seconds ago   789MB
centos       8         5d0da3dc9764   10 months ago   231MB
[root@localhost ~]# 
[root@localhost ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: daojiang
Password: 
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 ~]# 
上传镜像
[root@localhost ~]# docker push daojiang/httpd:v1.1
The push refers to repository [docker.io/daojiang/httpd]
c84be8057ecf: Pushing  24.03MB/557.5MB

10.对镜像进行验证并访问测试

[root@localhost ~]# docker run -d --name web --restart always -p 80:80 -v /root/httpd_html:/usr/local/apache/htdocs nie/httpd:v1.1
2effcc0120c9b24b99d533ba4b61d4cc7391d1d8abf4d2f6ff5b6749e40166cc
[root@localhost ~]# 
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED             STATUS             PORTS                               NAMES
2effcc0120c9   nie/httpd:v1.1   "/usr/local/apache/b…"   43 seconds ago      Up 41 seconds      0.0.0.0:80->80/tcp, :::80->80/tcp   web
5bd55a8c19ab   centos:8         "/bin/bash"              About an hour ago   Up About an hour                                       httpd
[root@localhost ~]# 
导入下载的压缩包,配置网站
[root@localhost httpd_html]# unzip SnakeHTMLgames_780cbae4.zip 
Archive:  SnakeHTMLgames_780cbae4.zip
[root@localhost httpd_html]# ls
 Node.js   Snake.js   Stage.js  'from .gif'   snake.html


image

posted @   niebangrui  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示