docker compose部署wordpress

准备机器:

192.168.58.151 (关闭防火墙和selinux)

安装好docker服务 (详细参照:http://t.csdnimg.cn/usG0s 中的国内源安装docker)

部署wordpress:

创建目录:

复制代码
[root@docker ~]# mkdir wordpress
[root@docker ~]# ls
anaconda-ks.cfg        wordpress       ip_fixed.sh      

获取wordpress的安装包: cn.wordpress.org

服务器端下载:

复制代码
[root@docker ~]# cd wordpress/
[root@docker wordpress]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz

修改nginx.conf文件,并将其放在wordpress目录下

复制代码
[root@docker wordpress]# cat nginx.conf 
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/
 
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
 
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
 
events {
    worker_connections 1024;
}
 
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;
 
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
 
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
 
server {
        listen      80;
        server_name www.itnzs.top;
        location / {
                        root /usr/share/nginx/wordpress;
                        index index.php;
                }
        location ~ \.php$ {
            root          /usr/share/nginx/wordpress;  #指定网站目录
            fastcgi_pass   127.0.0.1:9000;    #指定访问地址
            fastcgi_index  index.php;           #指定默认文件
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; #站点根目录,取决于root配置项
            include        fastcgi_params;  #包含nginx常量定义
                        }
        }
 
# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2;
#        listen       [::]:443 ssl http2;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }
 
}

在wordpress目录下创建Dockerfile

复制代码
[root@docker wordpress]# vim Dockerfile 
# 设置基础镜像
FROM daocloud.io/library/centos:7
 
# 安装环境
RUN yum install -y epel-release \
; yum install -y nginx \
; yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm \
; yum install -y php80-php-xsl php80-php php80-php-cli php80-php-devel php80-php-gd php80-php-pdo php80-php-mysql php80-php-fpm \
; yum clean all
 
# 将代码包拷贝到镜像中
# RUN wget https://cn.wordpress.org/latest-zh_CN.tar.gz
ADD latest-zh_CN.tar.gz /usr/share/nginx
 
# 将配置文件拷贝到镜像中
COPY nginx.conf /etc/nginx/
 
# 将启动脚本拷贝到镜像中
COPY docker-entrypoint.sh /
 
# 在启动容器时执行脚本
CMD ["sh","/docker-entrypoint.sh"]

创建docker-entrypoint.sh文件并编辑,其目的是执行启动服务并将其hang住。

复制代码
[root@docker wordpress]# vim docker-entrypoint.sh 
chmod 777 /usr/share/nginx/wordpress -R
nginx
/opt/remi/php80/root/usr/sbin/php-fpm
echo "nginx 和 php 启动成功"
tail -f /var/log/nginx/*

创建docker-compose.yaml文件,并进行编辑

复制代码
[root@docker wordpress]# vim docker-compose.yaml 
version: '3'
services:
  wordpress:
    build: .
    container_name: wordpess-web
    ports:
      - "80:80/tcp"
      - "443:443/tcp"
    links:
      - mysql:wordpess.db.com
    depends_on:
      - mysql
 
  mysql:
    image: mysql:5.7
    container_name: wordpess-db
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=wordpress
    volumes:
      - /opt/wordpress/:/var/lib/mysql

查看文件及镜像

复制代码
[root@docker wordpress]# ls
docker-entrypoint.sh  Dockerfile  latest-zh_CN.tar.gz  nginx.conf  docker-compose.yaml
 
[root@docker wordpress]# docker pull daocloud.io/library/centos:7
[root@docker wordpress]# docker pull mysql:5.7
[root@docker wordpress]# docker images
REPOSITORY                                               TAG       IMAGE ID       CREATED         SIZE
daocloud.io/library/centos                               7         7e6257c9f8d8   3 years ago     203MB
mysql                                                    5.7       c20987f18b13   23 months ago   448MB

使用docker compose命令进行启动

复制代码
[root@docker wordpress]# docker compose up
[+] Building 0.0s (0/0)                                                              
[+] Running 3/3
 ✔ Network wordpress_default  Created                                           0.1s 
 ✔ Container wordpess-db      Created                                           0.1s 
 ✔ Container wordpess-web     Created                                           0.1s 
Attaching to wordpess-db, wordpess-web
····
wordpess-web  | nginx 和 php 启动成功
wordpess-web  | ==> /var/log/nginx/access.log <==
wordpess-web  | 
wordpess-web  | ==> /var/log/nginx/error.log <==

另启一个端口查询端口

复制代码
[root@docker ~]# ss -nplt | grep 80
LISTEN     0      128          *:80                       *:*                   users:(("docker-proxy",pid=26740,fd=4))
LISTEN     0      128       [::]:80                    [::]:*                   users:(("docker-proxy",pid=26746,fd=4))

浏览器访问 ip (192.168.58.151)

获取数据库ip (下图中的IPAddress: 172.19.0.2)

复制代码
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE                 COMMAND                   CREATED         STATUS         PORTS                                                                      NAMES
5d29b8a45292   wordpress-wordpress   "sh /docker-entrypoi..."   4 minutes ago   Up 4 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   wordpess-web
0251a7f3cd9c   mysql:5.7             "docker-entrypoint.s..."   4 minutes ago   Up 4 minutes   3306/tcp, 33060/tcp                                                        wordpess-db
 
[root@docker ~]# docker inspect 0
······
                    "NetworkID": "1f2731089eddc996fec23766d403d49a4a7999eaedeadab0ebabeffbf4ad80e4",
                    "EndpointID": "158d94250df1b4e69aac769f9834f7a74ab7054fc995108bef873af5657d9115",
                    "Gateway": "172.19.0.1",
                    "IPAddress": "172.19.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:13:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]
[root@docker ~]# 

浏览器端进行填写

后续操作可按需进行操作即可。

相关推荐
Java陈序员2 小时前
轻量强大!一款现代化的 Kubernetes 集群管理与监控工具!
云原生·容器·kubernetes
爱吃橘子橙子柚子1 天前
3CPU性能排查总结(超详细)【Linux性能优化】
运维·cpu
Sheffield2 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield2 天前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
马艳泽2 天前
win10下运行Start Broker and Proxy报错解决
docker
舒一笑3 天前
程序员效率神器:一文掌握 tmux(服务器开发必备工具)
运维·后端·程序员
NineData3 天前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
用户13573999256603 天前
Windows 从 0 搭建 WSL2 原生 AI 开发环境:Codex + Docker + VSCode
docker
vi_h3 天前
在 macOS 上通过 Docker 安装并运行 Ollama(详细可执行教程)
macos·docker·ollama
黑心老魔3 天前
通过 Docker 创建开发环境
docker·开发环境