在Ubuntu 16.04上将Wordpress与Nginx和PHP-FPM进行Dockerizing

Docker-Compose是一个命令行工具,用于定义和管理多容器Docker容器,就像它们是单一服务一样。 Compose是用python编写的,可以用Python pip命令安装。 通过撰写,我们可以使用单个命令运行多个docker容器。 它允许您创建一个容器作为服务,非常适合您的开发,测试和分段环境。

在本教程中,我将引导您逐步使用docker-compose。 我们将使用Nginx,MySQL和PHP-FPM部署“ Wordpress ”。 每个服务都有自己的容器,我们将使用docker hub注册表中的图像。 我将向您展示如何从码头图像创建容器,并使用docker-compose管理所有容器。

前提条件

  • Ubuntu 16.04
  • 根特权

第1步 - 安装Docker

我们将从头开始,使用apt命令手动安装docker和docker。

在开始之前,请更新Ubuntu存储库并安装最新更新:

sudo apt-get update
sudo apt-get upgrade

默认情况下,Docker在Ubuntu存储库中可用,因此我们可以立即继续安装:

sudo apt-get install -y docker.io

安装完成后,启动docker并将其添加到启动时自动启动:

systemctl start docker
systemctl enable docker

现在使用以下命令测试您的Docker安装:

docker run hello-world

你会看到从码头的hello世界。

第2步 - 安装Docker-Compose

Docker-compose是一个用python编写的脚本,它在PyPI python存储库中可用,可以安装python pip。 所以我们需要先在我们的系统上安装python和python pip。

安装python和python-pip:

sudo apt-get install -y python python-pip

接下来,使用pip命令安装docker-compose:

pip install docker-compose

等待安装过程完成。 然后使用docker-compose命令检查安装:

docker-compose -v

您将获得docker-compose版本。

第3步 - 安装Wordpress

现在,docker和docker-compose安装在系统上。 在此步骤中,将显示如何为我们的WordPress项目创建和设置docker-compose环境。

我们将使用Nginx作为Web服务器部署“Wordpress”PHP应用程序,将用于MySQL数据库的MariaDB作为docker-compose管理的docker容器。 每个应用程序(Wordpress,Nginx和MySQL)将在自己的容器中运行,您可以看到下面的列表:

- Nginx :我们使用官方的Docker镜像,最新版本“nginx:latest”。

- Wordpress :Wordpress在docker-hub上提供了一些Docker映像,我们将在其上使用带有PHP-FPM 7.0的WordPress 4.7。

- MySQL :我们将使用MariaDB官方容器,最新版本。

所以我们需要从docker hub注册表中的3个码头图像。

我们不会以root身份运行docker,我们将使用普通的Linux用户。 所以只需创建一个新的用户,使用下面的命令(在这里可以自由使用不同的用户名,只要确保用户不存在,如果您选择不同的名称,请确保在本教程中遵循的所有命令中进行更改)

useradd -m -s /bin/bash hakase
passwd hakase

现在将用户添加到“ docker ”组,以便用户可以使用docker命令,并重新启动docker服务:

usermod -a -G docker hakase
systemctl restart docker

登录到用户的“hakase”并为WordPress项目创建一个新目录:

su - hakase
mkdir -p wordpress-compose
cd wordpress-compose/

接下来,创建一个名为' docker-compose.yml '的新文件,并为项目创建一个新目录。 只需键入以下命令:

touch docker-compose.yml
mkdir -p nginx/
mkdir -p db-data/
mkdir -p logs/nginx/
mkdir -p wordpress/

文件和目录项目列表:

- docker-compose.yml :这是docker-compose配置文件,您必须在启动新的docker-compose项目时创建它。

- nginx / :该目录用于我们的额外的nginx配置,如虚拟主机等。

- db-data / :mysql数据的卷/目录。 来自数据“/ var / lib / mysql”的sql被安装到db-data目录下。

- logs / :应用程序日志目录,nginx,mariadb和php-fpm。

- wordpress /:所有wordpress文件将在该目录中可用。

在'nginx'目录中,为我们的wordpress虚拟主机创建一个新的配置文件。

创建一个新的文件wordpress.conf:

vim nginx/wordpress.conf

粘贴配置如下:

server {
    listen 80;
    server_name wp-hakase.co;

    root /var/www/html;
    index index.php;

    access_log /var/log/nginx/hakase-access.log;
    error_log /var/log/nginx/hakase-error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass wordpress:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

保存文件并退出vim。

第4步 - 配置Docker-Compose

在此步骤中,我们将开始编辑docker-compose.yml文件。 当您要启动docker-compose项目时,请确保先创建docker-compose.yml文件,就像我们在下面进行的那样。

使用vim编辑docker-compose.yml:

vim docker-compose.yml

定义您的服务,在第一行我们将定义Nginx。 我们正在使用Nginx官方Docker映像,最新版本,并将容器端口80的端口映射配置为主机端口80。 接下来,配置Docker卷,Nginx虚拟主机配置的卷,Nginx日志文件的卷和Web根目录卷'/ var / www / html'。 Nginx容器链接到WordPress容器。

粘贴配置如下:

nginx:
    image: nginx:latest
    ports:
        - '80:80'
    volumes:
        - ./nginx:/etc/nginx/conf.d
        - ./logs/nginx:/var/log/nginx
        - ./wordpress:/var/www/html
    links:
        - wordpress
    restart: always

接下来,定义MySQL服务器。 我们使用的是最新版本的MariaDB镜像。 为端口3306上的容器配置端口映射,并使用环境变量“MYSQL_ROOT_PASSWORD”配置MySQL根密码。 最后,配置MySQL数据目录的容器卷。

粘贴配置如下:

mysql:
    image: mariadb
    ports:
        - '3306:3306'
    volumes:
        - ./db-data:/var/lib/mysql
    environment:
        - MYSQL_ROOT_PASSWORD=aqwe123
    restart: always

然后我们将使用安装了PHP-FPM 7.0的WordPress 4.7 Docker映像来配置WordPress服务。 在端口9000上配置PHP-fpm的端口,启用主机目录“wordpress”的web目录“/ var / www / html”的docker卷,通过定义WordPress环境变量来设置数据库,并将WordPress服务链接到mysql。

粘贴配置如下:

wordpress:
    image: wordpress:4.7.1-php7.0-fpm
    ports:
        - '9000:9000'
    volumes:
        - ./wordpress:/var/www/html
    environment:
        - WORDPRESS_DB_NAME=wpdb
        - WORDPRESS_TABLE_PREFIX=wp_
        - WORDPRESS_DB_HOST=mysql
        - WORDPRESS_DB_PASSWORD=aqwe123
    links:
        - mysql
    restart: always

将三个部分添加到docker-compose.yml文件中后,保存文件并退出vim编辑器。

我们的码头组合配置已经准备就绪。

第5步 - 运行Docker-compose

开始创建与docker组合的新容器。 转到wordpress-compose目录,并根据我们的撰写文件启动新的容器。

cd ~/wordpress-compose/
docker-compose up -d

您可以看到命令的结果。 创建了三个容器。 我们用ps选项检查容器状态:

docker-compose ps

结果如下:

如果要查看容器的日志输出,可以使用以下命令:

docker-compose logs nginx
docker-compose logs mysql
docker-compose logs wordpress

容器日志:

注意
如果您在WordPress容器中看到有关MySQL连接被拒绝的错误,请忽略它。

第6步 - 安装Wordpress

在我们执行此步骤之前,我们来检查系统上可用的端口/打开的端口。 确保您已打开3个端口,端口80,3306和端口9000。

netstat -plntu

结果如下:

现在打开您的网络浏览器并输入服务器URL或IP地址。

http:// serverIP /

您可以看到WordPress的安装页面。 选择您的语言,然后点击“ 继续 ”。

填写您的网站详细信息,如网站标题,管理员用户和密码,您的电子邮件地址,然后单击“ 安装Wordpress ”。

您将被重定向到“ Wordpress管理控制台 ”。

这是我的WordPress示例帖子你好世界。

Wordpress已经安装了docker-compose。

第7步 - 访问Docker容器

这是关于如何使用docker-compose访问容器的附加步骤。 检查所有容器是否可用,并显示其状态:

docker-compose ps

我们已经拥有3个容器,现在我们可以尝试登录到每个容器。 使用docker-compose命令登录到第一个Nginx容器。

docker-compose exec nginx bash

nginx :docker-compose文件docker-compose.yml上的服务名称

bash :执行bash shell命令

现在检查我们的WordPress虚拟主机配置。

cat /etc/nginx/conf.d/wordpress.conf

文件在容器中可用。

接下来,尝试登录到mysql容器,然后使用我们在compose文件上的密码登录到mysql shell。

docker-compose exec mysql bash
mysql -u root -p
TYPE MYSQL ROOT PASSWORD

查看数据库列表:

show databases;

您将看到我们的WordPress数据库。

在“wordpress”容器中,您将看到所有的WordPress文件。

docker-compose exec wordpress bash
ls -lah

所有容器都可以访问。

参考

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏