【Docker】新手教程的第一个demo:Wordpress

1 任务简单介绍

WordPress是什么:

  • 是一个常用博客软件
  • 简单易部署,只需要两个容器(业务容器 + 数据库容器)

本文借鉴博客,使用自建 WordPress 容器方法在Docker上部署Wordpress,本地环境为Mac时使用该博客会存在一些问题,因此写本博客记录一下

2 自建 WordPress 容器

2.1 获取官方PHP image

  1. 在本地新建工作目录,并进入
$ mkdir docker-demo && cd docker-demo
  1. 创建容器并启动
$ docker container run \--rm \--name wordpress \--volume "$PWD/":/var/www/html \-p 8080:80 \php:5.6-apache

四个参数的含义是:

  • –rm:停止运行后,自动删除容器文件。
  • –name wordpress:容器的名字叫做wordpress。
  • –volume “$PWD/”:/var/www/html:将当前目录($PWD)映射到容器的/var/www/html(Apache 对外访问的默认目录)。因此,当前目录的任何修改,都会反映到容器里面,进而被外部访问到
  • –p 选项来映射端口,然后通过宿主机的 IP 地址和映射的端口来访问网站
  1. 可以通过 http://localhost:8080来访问
    会出现问题:无法访问,这是因为会默认寻找index.php文件作为首页,而我们的项目目录是空的
    在这里插入图片描述

在这里插入图片描述

  • 只需要在项目目录中增加index.php即可
<?php 
phpinfo();
?>

在这里插入图片描述

  • 再打开http://localhost:8080
    在这里插入图片描述

2.2 获得Wordpress安装包

  • 在docker- demo目录下,执行
    #解压以后,WordPress 的安装文件会在docker-demo/wordpress目录下
    $ wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
    $ tar -xvf wordpress-4.9.4-zh_CN.tar.gz
    
  • 访问http://localhost:8080/wordpress
    在这里插入图片描述

2.3 Mysql容器

  1. 基于 MySQL 的 image 文件(5.7版本)新建一个容器
docker container run \-d \--rm \--name wordpressdb \--env MYSQL_ROOT_PASSWORD=123456 \--env MYSQL_DATABASE=wordpress \mysql:5.7
  • –d:容器启动后,在后台运行
  • –rm:容器终止运行后,自动删除容器文件。
  • –name wordpressdb:容器的名字叫做wordpressdb
  • –env MYSQL_ROOT_PASSWORD=123456:向容器进程传入一个环境变量MYSQL_ROOT_PASSWORD,该变量会被用作
    MySQL 的根密码
  • –env MYSQL_DATABASE=wordpress:向容器进程传入一个环境变量MYSQL_DATABASE,容器里面的 MySQL 会根据该变量创建一个同名数据库(本例是WordPress)
  1. 查看正在运行的容器
  • wordpress:$ docker container ls
  • wordpressdb(wordpressdb是后台运行的):docker container logs wordpressdb

2.4 定制PHP容器

现在 WordPress 容器和 MySQL 容器都已经有了。接下来,要把 WordPress 容器连接到 MySQL 容器。但是,PHP 的官方 image 不带有mysql扩展,必须自己新建 image 文件。1. 停掉 WordPress 容器

$ docker container stop wordpress
  1. 在docker-demo目录里面,新建一个Dockerfile文件。在原来 PHP 的 image 基础上,安装mysqli的扩展。然后,启动 Apache
FROM php:5.6-apache
RUN docker-php-ext-install mysqli
CMD apache2-foreground
  1. 基于这个 Dockerfile 文件,新建一个名为phpwithmysql的 image 文件
$ docker build -t phpwithmysql .

2.5 Wordpress 容器连接 MySQL

  1. 增加权限
chmod -R 777 wordpress
  1. 基于 phpwithmysql image,重新新建一个 WordPress 容器
docker container run   --rm \
--name wordpress   \
--volume "$PWD/":/var/www/html  \
--link wordpressdb:mysql  \
-p 8080:80 phpwithmysql
  1. 打开 http://localhost/wordpress
    在这里插入图片描述
    安装完毕!
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/681295.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql数据库---操作数据库跟表的命令总结

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文着重整理mysql管理库跟表的指令。 不涉及增删查改等指令 其实本篇主要是我做好笔记格式 用的时候直接复制粘贴的 所以排版大多是为了快速找功能来排的 方便大家快速找目标语法 数据库的简介 一个数据库系…

系统权限控制插件封装-实现系统权限控制插件化

背景&#xff1a;按照传统的开发方式方式&#xff0c;每次新开发一个系统&#xff0c;就需要花费大量时间精力去搭建权限控制模块&#xff0c;如果我们把权限控制这一整个模块都抽离成一个独立的权限控制插件&#xff0c;支持单命令安装&#xff0c;全面暴露参数与方法&#xf…

JDBC技术-1

JDBC: Java Database Connectivity Java连接数据库技术 通俗点说&#xff0c;在Java代码中&#xff0c;使用JDBC提供的方法&#xff0c;可以发送字符串类型的SQL语句到数据库管理软件&#xff08;Mysql&#xff0c;Oracle等&#xff09;&#xff0c;并且获取语句执行结…

RK3568平台(基础篇)linux错误码

一.概述 linux应用程序开发过程中&#xff0c;经常会遇到一些错误信息的返回&#xff0c;存在的可能性有&#xff0c;参数有误、非法访问、系统资源限制、设备/文件不存在、访问权限限制等等。对于这类错误&#xff0c;可以通过perror函数输出具体描述&#xff0c;或者通过str…

Linux-笔记 uboot修改设备树

1. FDT介绍 扁平设备树&#xff08;Flattened Device Tree&#xff0c;FDT&#xff09;&#xff0c;也叫平坦设备树&#xff0c;是设备树的一种二进制表示形式&#xff0c;提高了在嵌入式系统中的传输和解析效率&#xff1b; 2. 在U-Boot中使用FDT 2.1. 进入U-Boot 开发板上…

基于无监督学习算法的滑坡易发性评价的实施(k聚类、谱聚类、Hier聚类)

基于无监督学习算法的滑坡易发性评价的实施 1. k均值聚类2. 谱聚类3. Hier聚类4. 基于上述聚类方法的易发性实施本研究中的数据集和代码可从以下链接下载: 数据集实施代码1. k均值聚类 K-Means 聚类是一种矢量量化方法,最初来自信号处理,旨在将 N 个观测值划分为 K 个聚类,…

如何把逻辑地址转换为物理地址

​ 使用系统架构设计师真题说明&#xff08;2021年&#xff09;某计算机系统页面大小为 4K&#xff0c;进程 P1 的页面变换表如下图示&#xff0c;看 P1 要访问数据的逻辑地址为十六进制 1B1AH&#xff0c;那么该逻辑地址经过变换后&#xff0c;其对应的物理地址应为十六进制&…

【记录42】centos 7.6安装nginx教程详细教程

环境&#xff1a;腾讯云centos7.6 需求&#xff1a;安装nginx-1.24.0 1. 切入home文件 cd home 2. 创建nginx文件 mkdir nginx 3. 切入nginx文件 cd nginx 4. 下载nginx安装包 wget https://nginx.org/download/nginx-1.24.0.tar.gz 5. 解压安装包 tar -zxvf nginx-1.24.0.…

使用Processing和PixelFlow库创建交互式流体太极动画

使用Processing和PixelFlow库创建交互式流体太极动画 引言准备工作效果展示代码结构代码解析第一部分&#xff1a;导入库和设置基本参数第二部分&#xff1a;流体类定义MyFluidDataConfig 类详解MyFluidData 类详解my_update 方法详解流体类定义完整代码 第三部分&#xff1a;太…

c++11 lambda 捕获,匿名,返回类型后置

lambda就是即写即用的匿名函数&#xff0c;可以用于解决匹配函数参数的问题 int main(int argc,char *argv[]) {vector<int> v{1,2,3,4,5,6,7,8};for_each(v.begin(),v.end(),[](int a){cout<<a;});return 0; } for_each是固定函数&#xff0c;我们需要他但是又没…

如何使用IdeaJ2023创建一个JavaWeb项目

开篇 简单整理一下创建JavaWeb项目的步骤&#xff0c;希望能对您有所帮助。 步骤图解 步骤一: 创建项目 此时得到的项目是如图所示的普通Java项目&#xff1a; 步骤二: 在项目中增加web文件夹 点击File -> Project Structure 点击Project Setting -> Modules -> …

Android 10.0 Launcher3定制folder文件夹2x2布局之一xml文件配置和解析相关属性

1.前言 在10.0的系统rom产品定制化开发中,在对Launcher3的folder文件夹功能定制中,要求folder文件夹跨行显示,就是 2x2布局显示,默认的都是占1格的,现在要求占4格显示,系统默认是不支持显示4格的,所以接下来需要分析相关的 功能,然后来实现这个功能 2.Launcher3定制fo…