docker-compose制作Wordpress

提前准备nginx_php:v1镜像

yum仓库镜像:
方法1:
宿主机安装createrepo
容器提供nginx --> debian
数据挂载到/data 
更新在宿主机上更新
优点:不需要自己创建镜像
缺点:宿主机需要额外安装软件

方法2:
自定义centos7+nginx的镜像
容器里安装createrepo
挂载目录/data
更新在容器里更新
优点:宿主机不需要做其他操作
缺点:需要自己制作镜像,操作步骤稍复杂

操作步骤:
1.准备文件
[root@docker-11 ~/dockerfile/nginx_c7]# tree
.
├── build.sh
├── conf
│   ├── epel.repo
│   ├── nginx.conf
│   └── yum.conf
├── Dockerfile
└── soft
    └── nginx-1.18.0-1.el7.ngx.x86_64.rpm

2.编写dockerfile
===================================
#基于什么镜像
FROM centos:7

#添加软件源
COPY conf/epel.repo /etc/yum.repos.d/epel.repo
#拷贝nginx软件包
COPY soft/nginx-1.18.0-1.el7.ngx.x86_64.rpm /tmp/

#创建用户,安装软件
RUN groupadd -g 1000 www && \
    useradd -u 1000 -g 1000 www && \
    yum install openssl createrepo -y && \
    rpm -ivh /tmp/nginx-1.18.0-1.el7.ngx.x86_64.rpm && \
    rm -rf /etc/nginx/conf.d/* && \
    rm -rf /usr/share/nginx/html/* && \
    rm -rf /tmp/nginx-1.18.0-1.el7.ngx.x86_64.rpm && \
    yum clean all 

#拷贝配置文件
COPY conf/nginx.conf /etc/nginx/nginx.conf
COPY conf/yum.conf /etc/nginx/conf.d/yum.conf

#暴露端口
EXPOSE 80

#启动服务
CMD ["nginx","-g","daemon off;"]
===================================

3.构建镜像
docker build -t yum:v1 .

4.启动容器
ifconfig eth0:1 10.0.0.13 up
docker run -it \
--name yum \
-p 10.0.0.13:80:80 \
-v /data/yum/:/usr/share/nginx/html/ \
-d yum:v2

5.准备php需要的rpm包

6.生成仓库索引文件
docker exec yum createrepo /usr/share/nginx/html/

7.创建干净的容器测试下载
- 创建新的centos7容器
- 将php软件包拷贝进容器里
- 进入容器
- 修改yum配置文件,打开缓存
- 进入软件包目录,执行 yum localinstall *.rpm -y
- 安装完成后找出所有下载的rpm包并保存
- 将所有的rpm包拷贝到宿主机的yum仓库数据目录
- 在宿主机外执行容器命令重新生成仓库索引文件
- 重新生成新的干净的centos7容器
- 进入新容器并删除所有repo文件
- 创建本地源的repo文件
- 正常执行yum命令安装软件
- 查看安装是否报错


nginx+php镜像:
1.准备配置文件和代码
[root@docker-11 ~/dockerfile/nginx_php]# tree 
.
├── build.sh
├── code
│   └── wordpress-5.2.2-zh_CN.tar.gz
├── conf
│   ├── local.repo
│   ├── nginx.conf
│   ├── nginx_php.ini
│   ├── supervisord.conf
│   ├── wordpress.conf
│   └── www.conf
├── Dockerfile
└── start.sh

2.编写dockerfile
===============================
[root@docker-11 ~/dockerfile/nginx_php]# cat Dockerfile 
#基于什么镜像
FROM centos:7

#添加软件源和代码
RUN rm -rf /etc/yum.repos.d/*
COPY conf/local.repo /etc/yum.repos.d/local.repo
ADD code/wordpress-5.2.2-zh_CN.tar.gz /code/

RUN groupadd -g 1000 www && \
    useradd -u 1000 -g 1000 www && \
    chown -R www:www /code/wordpress && \
    yum install nginx php71w php71w-cli php71w-common php71w-devel php71w-embedded  php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache supervisor -y && \
    rm -rf /etc/nginx/conf.d/default.conf && \
    yum clean all 

#拷贝配置文件
COPY conf/nginx.conf /etc/nginx/nginx.conf
COPY conf/wordpress.conf   /etc/nginx/conf.d/wordpress.conf
COPY conf/www.conf  /etc/php-fpm.d/www.conf
COPY conf/supervisord.conf /etc/supervisord.conf
COPY conf/nginx_php.ini /etc/supervisord.d/nginx_php.ini

#暴露端口
EXPOSE 80

#启动服务
CMD ["/usr/bin/supervisord","-c","/etc/supervisord.conf"]
=================================

mysql命令:
mkdir /data/mysql
chown -R mysql:mysql /data/mysql
 
docker run \
--name mysq \
--user 2000:2000 \
-p 3306:3306 \
-v /data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_USER=wordpress \
-e MYSQL_PASSWORD=wordpress \
-e MYSQL_DATABASE=wordpress \
-d mysql:5.7 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci


制作Wordpress

# 自定义网络
docker network create -d bridge --subnet 192.168.100.0/24 --gateway 192.168.100.1 wordpress-net


cat >/root/docker-compose/docker-compose_wordpress.yml <<EOF
version: '3'
services:
    mysql:
        image: mysql:5.7
        container_name: mysql
        user: 2000:2000
        environment:
            - "MYSQL_ROOT_PASSWORD=123"
            - "MYSQL_DATABASE=wordpress"
            - "MYSQL_USER=wordpress"
            - "MYSQL_PASSWORD=wordpress"
        volumes:
            - "/data/wordpress_mysql:/var/lib/mysql"
        ports:
            - "3306:3306" 
        command:
            --character-set-server=utf8
            --collation-server=utf8_bin
    nginx_php:
        image: nginx_php:v1
        container_name: nginx_php
        ports:
            - "80:80" 

networks:
    default:
        external: true
        name: wordpress-net
      
EOF

docker-compose -f docker-compose_wordpress.yml up
posted @ 2022-05-30 12:31  hai起奈  阅读(76)  评论(0编辑  收藏  举报