使用Docker-compose通过WEB和DB的Dockerfile构建WordPress

目标

为了加深对Docker的理解,我使用Docker-Compose构建了一个WordPress。

设定条件

使用AmazonLinux2映像构建容器
分别使用2个容器用于WEB和DB
数据持久化
在写完日志后,无论容器如何重启,写的博客文章都会保留下来。

环境设置

・Docker版本3.8
・PHP版本7.3
・Apache
・MySQL
・MariaDB

构成

/opt/project
l L docker-compose.yml
l—web
l l-Dockerfile
l—db
l-Dockerfile
l-wordpress
l-db.opt

/ opt / project
l L docker-compose.yml
l—web
l l-Dockerfile
l—db
l-Dockerfile
l-wordpress
l-db.opt

步骤

1. 获取根权限

# sudo su -

2. Docker的安装

# yum install docker

3. 启动Docker

# systemctl start docker

确认Docker进程的通畅性。

# ps -ef | grep docker

确认 Docker 系统的启动

# systemctl status docker

6. 创建并切换到工作目录。

# mkdir /opt/project && cd /opt/project

创建web/db目录

# mkdir web
# mkdir db

创建一个名为8.yml的文件。

# vi docker-compose.yml
-----------------------------------------
 version: "3.8"
services:
#./webに作成したwordpressのDockerfileを使用して"docker-compose build"でwebという名前のイメージを作成
  web:
    container_name: web
    build: ./web
    #ポート番号の指定
    ports:
      - "80:80"
    tty: true
#./dbに作成したMySQLのDockerfileを使用して"docker-compose build"でdbという名前のイメージを作成
  db:
    container_name: db
    build: ./db
    #ポート番号の指定
    ports:
      - "3306:3306"
    tty: true
 -----------------------------------------

创建WordPress的Dockerfile。

# cd /opt/project/web && vi Dockerfile
-----------------------------------------
#AmazonLinux2の環境を使用
FROM amazonlinux:2

#初期装備をインストール
RUN yum -y install yum-utils tar wget procps epel-release
RUN yum clean all

#Apacheインストール
RUN yum -y install httpd

#PHPのインストール
RUN amazon-linux-extras enable php7.3
RUN yum install -y php php-gd php-mysqlnd php-xmlrpc

#wordpressインストール
#ENV wpdl https://wordpress.org/latest-ja.tar.gz

# wp download
#RUN cd /var/www/html && wget -O - $wpdl | tar xzfv -
#RUN mv /var/www/html/wordpress/* /var/www/html
RUN wget https://wordpress.org/latest.tar.gz
RUN tar -xzvf latest.tar.gz
RUN mv /wordpress/* /var/www/html
RUN chown -R apache:apache /var/www/html
RUN chmod 2775 /var/www/html

CMD [ "/usr/sbin/httpd", "-D", "FOREGROUND" ]
-----------------------------------------

10. 创建数据库的Dockerfile。

# cd /opt/project/db && vi Dockerfile
-----------------------------------------
FROM amazonlinux:2

#初期装備をインストール
RUN yum install -y yum-utils tar wget procps epel-release

#インストール
RUN yum -y install mariadb mariadb-server

#pingコマンド使用
RUN yum install -y iputils

#port確認
EXPOSE 3306

# DB作成
RUN mkdir /var/lib/mysql/wordpress/
COPY ./wordpress /var/lib/mysql/wordpress/
RUN chown -R mysql:mysql /var/lib/mysql/wordpress

#mariadbの起動
CMD ["/usr/bin/mysqld_safe" ,"--skip-grant-tables"]
 -----------------------------------------

创建制作DB图像所需的文件。

# mkdir /opt/project/db/wordpress && vi /opt/project/db/wordpress/db.opt
 -----------------------------------------
 default-character-set=latin1
 default-collation=latin1_swedish_ci
 -----------------------------------------

使用docker-compose构建镜像。

# cd /opt/prject
# docker-compose build

确认已创建的图像

#docker images

使用docker-compose创建容器

# docker-compose up -d

确认已创建的容器

# docker ps
# docker-compose ps

16. 使用网络登录并安装WordPress

http://グローバルIP

~数据库选择页面~
数据库名:wordpress
用户名:空白
密码:空白
数据库主机名:db
※数据库容器名
表前缀:wp_ (保持原样)
安装完成!!
为了确认下一个任务,请随便发表一篇想法。

请提供一个句子或短语以供改写。

使用Docker Compose可能是初学者的一个好的起点:
滅びの呪文 -> 毁灭的咒语
初心者はdocker-composeから始めた方がいいかもしれない説 -> 对于初学者来说,也许从docker-compose开始较好
Docker Compose を使う -> 使用Docker Compose

数据持久化

创建Docker卷

# docker volume create mariadb

在docker-compose.yml文件中添加volumes

# cd /var/project/ && vi docker-compose.yml
---------------------------------------------
version: "3.8"
services:
  web:
  ~要約~
  #ボリュームを使いWEBデータを永続化
    volumes:
      - wordpress/:/var/www/html
 ~~~~~~~~~~~~~~~~~~~~~~~  
  db:
  ~要約~
  #ボリュームを使いDBデータを永続化
    volumes:
      - mariadb:/var/lib/mysql
 ~~~~~~~~~~~~~~~~~~~~~~~
# databaseのように永続的なストレージが欲しい場合に必要な設定
volumes:
  mariadb:
  wordpress:
---------------------------------------------

一次删除Docker容器

# docker-compose down -v

使用docker-compose重新创建容器。

# docker-compose up -d

在网上登录并确认。

http://全球IP

以下是参考资料2.

使用 Docker-Compose 永久化数据 MySQL
从理解 Data Volume(数据卷)开始进行环境构建入门
使用 docker-compose 来构建 WordPress 主题开发环境

bannerAds