【云原生】Dockerfile制作WordPress镜像,实现Compose + K8s编排部署(下)

简介: 【云原生】Dockerfile制作WordPress镜像,实现Compose + K8s编排部署

Dockerfile-service

cat > Dockerfile-service << EOF
FROM centos:centos7.9.2009
MAINTAINER qyl
WORKDIR /opt
COPY wordpress-6.2-zh_CN.zip ./
COPY yum.sh /opt/
RUN sh /opt/yum.sh
RUN yum clean all &&\
    yum install -y nginx unzip  &&\
    unzip ./wordpress-6.2-zh_CN.zip
# 安装php7.4环境
RUN yum install -y php74-php-devel php74-php php74-php-cli php74-php-common php74-php-gd php74-php-ldap php74-php-mbstring php74-php-mcrypt php74-php-pdo php74-php-mysqlnd  php74-php-fpm php74-php-opcache php74-php-pecl-redis php74-php-pecl-mongodb php74-php-fpm
#修改 php-fpm 的用户和组为nginx
RUN sed -i 's/^user\ =\ apache/user\ =\ nginx/g' /etc/opt/remi/php74/php-fpm.d/www.conf && \
    sed -i 's/^group\ =\ apache/group\ =\ nginx/g' /etc/opt/remi/php74/php-fpm.d/www.conf &&\
    php74 -v
RUN rm -rf /usr/share/nginx/html/* &&\
    cp -rf ./wordpress/* /usr/share/nginx/html/
COPY default.conf /etc/nginx/conf.d/default.conf
COPY wp-config.php /usr/share/nginx/html/
EXPOSE 80
# 为了进入特权模式,所要运行的环境
CMD /usr/sbin/init
EOF

构建镜像

docker build -t wp-service:v1 -f Dockerfile-service .

docker compose 编排

使用上述构建的镜像编排容器

cat > docker-compose.yaml << EOF
version: '3'
services:
  mariadb:
    image: wp-mariadb:v1
    container_name: db
    ports:
    - 3306:3306
  wordpress:
    image: wp-service:v1
    container_name: wordpress
    privileged: true # 开启容器特权模式
    ports:
    - 80:80
    links:
    - mariadb  # 服务名
    depends_on:
    - mariadb
EOF

compose 启动容器

[root@master01 docker]# docker compose up -d
[+] Running 3/3
 ✔ Network docker_default  Created                                                                                    0.1s
 ✔ Container db            Started                                                                                    0.6s
 ✔ Container wordpress     Started                                                                                    1.3s
[root@master01 docker]# docker compose ps
NAME                IMAGE               COMMAND                  SERVICE             CREATED              STATUS              PORTS
db                  wp-mariadb:v1       "mysqld_safe --user=…"   mariadb             About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp
wordpress           wp:v1               "/bin/sh -c /usr/sbi…"   wordpress           About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, :::80->80/tcp

进入 wordpress 容器启动 php-fpm、nginx

因为这里使用的 yum 源安装的(其他方式也可以),没有php-fpm二进制命令启动 php-fpm 服务,而使用 systemctl 启动服务需要权限,也就是 compose 里面的 privileged: true 字段和 Dockerfile-service 里面的 CMD /usr/sbin/init,这样就能保证在容器使用systemctl启动服务了

docker exec -it wordpress bash
systemctl restart php74-php-fpm
systemctl restart nginx

浏览器访问 80 端口,安装 wordpress

K8s部署

svc

使用 svc 暴露服务

[root@master01 wordpress]# cat service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: mariadb
  name: mariadb
spec:
  clusterIP: None
  selector:
    app: mariadb
  type: ClusterIP
  ports:
  - port: 3306
---
apiVersion: v1
kind: Service
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  ports:
    - port: 80
  selector:
    app: wordpress
  type: NodePort

deploy

包含 mariadb 和 wordpress 服务

[root@master01 wordpress]# cat deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mariadb
  name: mariadb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mariadb
  template:
    metadata:
      labels:
        app: mariadb
    spec:
      containers:
      - image: wp-mariadb:v1
        name: mariadb
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: wordpress
  name: wordpress
spec:
  replicas: 1
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
      - image: wp-service:v1
        name: wordpress
        securityContext:
          privileged: true

进入WordPress pod 启动 php-fpm、nginx 服务

[root@master01 wordpress]# kubectl get pod
NAME                         READY   STATUS        RESTARTS      AGE
mariadb-5cd9b8655d-cq8nd     1/1     Running       0             4s
wordpress-744964c4cb-sk47g   1/1     Running       0             4s
[root@master01 wordpress]# kubectl exec -it pod/wordpress-744964c4cb-sk47g -- bash
[root@wordpress-744964c4cb-sk47g opt]# systemctl restart php74-php-fpm
[root@wordpress-744964c4cb-sk47g opt]# systemctl restart nginx

浏览器访问

[root@master01 wordpress]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        21d
mariadb      ClusterIP   None            <none>        3306/TCP       10h
wordpress    NodePort    10.97.150.148   <none>        80:32214/TCP   10h

✊ 最后


👏 我是秋意临,欢迎大家一键三连、加入云社区

👋 我们下期再见(⊙o⊙)!!!

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
132 60
|
2月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
262 62
|
15天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
1月前
|
应用服务中间件 PHP nginx
Docker-compose 编排lnmp(dockerfile) 完成Wordpress
通过使用Docker Compose,我们可以轻松编排LNMP环境并部署WordPress。本文详细介绍了各组件的Dockerfile和配置文件编写,并通过docker-compose.yml文件实现了整个环境的自动化部署。这种方法不仅简化了部署过程,还提高了环境的可移植性和一致性。希望本文能帮助你更好地理解和使用Docker Compose来管理和部署复杂的应用程序。
70 3
|
21天前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
41 0
|
28天前
|
Kubernetes 负载均衡 调度
Kubernetes集群管理与编排实践
Kubernetes集群管理与编排实践
|
2月前
|
域名解析 弹性计算 程序员
想要轻松地搭建一个即开即用的WordPress博客吗?借助宝塔面板镜像+阿里云ECS,迅速拥有自己的个人博客
拥有个人博客是每位程序员的梦想,但对服务器不熟悉的初学者而言,搭建博客颇具挑战。本文介绍利用阿里云市场的宝塔面板镜像与ECS云服务器,轻松搭建WordPress博客的方法,让您快速拥有专属博客空间。通过简单的操作步骤,即使是新手也能轻松上手,实现从零到有的博客搭建过程。
219 3
|
2月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
80 3
|
2月前
|
NoSQL 关系型数据库 Redis
高可用和性能:基于ACK部署Dify的最佳实践
本文介绍了基于阿里云容器服务ACK,部署高可用、可伸缩且具备高SLA的生产可用的Dify服务的详细解决方案。
|
5月前
【wordpress教程】wordpress博客网站添加非法关键词拦截
有的网站经常被恶意搜索,站长们不胜其烦。那我们如何屏蔽恶意搜索关键词呢?下面就随小编一起来解决这个问题吧。
84 1