本文主要是利用wordpres,对之前docker的一个总结,通过自定义镜像的方式,对我们LNMP架构进行部署,中间我们使用dockerfile进行简单的编排,使docker构建变得相当简单,接下来一起动手试试吧,几分钟就能搭建自己专属的博客。
一、自定义构建基础镜像
我们这里使用Dockerfile
进行创建。
Nginx
+PHP
+MYSQL
1,构建nginx镜像
FROM centos:7
MAINTAINER doc.dgstack.cn
RUN yum install -y gcc gcc-c++ make \
openssl-devel pcre-devel gd-devel vim \
iproute net-tools telnet wget curl && \
yum clean all && \
rm -rf /var/cache/yum/*
RUN wget http://nginx.org/download/nginx-1.15.5.tar.gz && \
tar zxf nginx-1.15.5.tar.gz && \
cd nginx-1.15.5 && \
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module && \
make -j 4 && make install && \
rm -rf /usr/local/nginx/html/* && \
echo "ok" >> /usr/local/nginx/html/status.html && \
cd / && rm -rf nginx-1.15.5* && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV PATH $PATH:/usr/local/nginx/sbin
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"
2,构建PHP镜像
这个构建时间长一些
root@ubuntu:/home/tools/nginx# cat Dockerfile-php
FROM centos:7
MAINTAINER doc.dgstack.cn
RUN yum install epel-release -y && \
yum install -y gcc gcc-c++ make gd-devel libxml2-devel \
libcurl-devel libjpeg-devel libpng-devel openssl-devel \
libmcrypt-devel libxslt-devel libtidy-devel autoconf \
iproute net-tools telnet wget curl && \
yum clean all && \
rm -rf /var/cache/yum/*
RUN wget http://docs.php.net/distributions/php-5.6.36.tar.gz && \
tar zxf php-5.6.36.tar.gz && \
cd php-5.6.36 && \
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm --enable-opcache \
--with-mysql --with-mysqli --with-pdo-mysql \
--with-openssl --with-zlib --with-curl --with-gd \
--with-jpeg-dir --with-png-dir --with-freetype-dir \
--enable-mbstring --with-mcrypt --enable-hash && \
make -j 4 && make install && \
cp php.ini-production /usr/local/php/etc/php.ini && \
cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf && \
sed -i "90a \daemonize = no" /usr/local/php/etc/php-fpm.conf && \
mkdir /usr/local/php/log && \
cd / && rm -rf php* && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV PATH $PATH:/usr/local/php/sbin
COPY php.ini /usr/local/php/etc/
COPY php-fpm.conf /usr/local/php/etc/
WORKDIR /usr/local/php
EXPOSE 9000
CMD ["php-fpm"]
构建Tomcat镜像
FROM centos:7
MAINTAINER doc.dgstack.cn
ENV VERSION=8.5.50
RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && \
yum clean all && \
rm -rf /var/cache/yum/*
RUN wget https://mirrors.aliyun.com/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \
tar zxf apache-tomcat-${VERSION}.tar.gz && \
mv apache-tomcat-${VERSION} /usr/local/tomcat && \
rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && \
mkdir /usr/local/tomcat/webapps/test && \
echo "ok" > /usr/local/tomcat/webapps/test/status.html && \
sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV PATH $PATH:/usr/local/tomcat/bin
WORKDIR /usr/local/tomcat
EXPOSE 8080
CMD ["catalina.sh", "run"]
构建基础镜像
docker build -t nginx:v1 -f Dockerfile-nginx .
docker build -t tomcat:v1 -f Dockerfile-tomcat .
docker build -t php:v1 -f Dockerfile-php .
二、快速部署LNMP (nginx+php)
1,你要知道用哪个镜像
2,镜像到底怎么用(dockerHub)
3,wordpres 是php开源软件
4,数据的持久化
1,自定义网络
docker network create dgstack
2,创建mysql容器
mysql我们直接使用官方源即可。
docker run -d \
--name dg_mysql \
--net dgstack \
--mount src=mysql-vol,dst=/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=jfsc mysql:5.7 --character-set-server=utf8
#mysql-vol数据卷不存在自动创建,参数设置不知道的可以去hub.docker.com查看
3,创建php 容器
docker run -d --name lnmp_php --net dgstack --mount src=wwwroot,dst=/wwwroot php:v1
#dst的wwwroot 目录,必须与nginx配置文件的 root 目录一致
# 让nginx 与php 都要访问网站根目录,以为动静分离
# src 是volume 卷 看下面截图
或者用 -v方式持久化想要的数据
docker run -d --name lnmp_php --net dgstack -v /data/nginx/jfsc/html:/wwwroot php:v1
4,创建nginx 容器
docker run -d --name lnmp_nginx --net dgstack -p 88:80 \
--mount src=wwwroot,dst=/wwwroot nginx:v1
或者用 -v
docker run --name lnmp_nginx -p 88:80 -d \
-v /data/nginx/jfsc/html:/wwwroot \
-v /data/nginx/jfsc/logs:/usr/local/nginx/logs \
-v /data/nginx/jfsc/conf.d:/usr/local/nginx/conf.d \
--net dgstack \
nginx:v1
5,创建测试页
cd /var/lib/docker/volumes/wwwroot/_data #进入数据卷,将项目上传
# 主要测试php与nginx是否能够通信
echo "<?php phpinfo();?>" > phpinfo.php #浏览器测试
#下载wordpress
[root@k8s-node2 _data]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz
[root@k8s-node2 _data]# tar -zxvf latest-zh_CN.tar.gz
[root@k8s-node2 _data]# mv wordpress/* ./
另外还测试个积分商城
快速部署LNMT (nginx+tomcat)
创建Tomcat 容器
如果你需要tomcat
,也可以安装哦
docker run -d \
--name dg-tomcat1 \
-p 8080:8080 \
--net dgstack \
--mount src=tomcat,dst=/usr/local/tomcat/webapps/ROOT/ \
tomcat:v1
#然后上传项目即可
cd /var/lib/docker/volumes/tomcat/_data
rz *.war
unzip -o *.war
项目上线流程
1, 新建项目路径(存放 dockerfile 、项目代码、)
2,构建基础镜像 比如 tomcat8:v1
3,拟写dockerfile 构建项目镜像,将代码\脚本、配置文件或需要自定义的内容,打包到镜像中
4,打tag,传到镜像仓库存储(testenv)
5,然后就是 stop原有镜像,rm掉,重新拉取新的镜像,在run 起来,就OK 了
三、Docker-compose
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- web_data:/var/www/html
ports:
- '80'
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
web_data:
执行
docker-compse up #运行
LAMP/LNMP/LTMP环境 Dockerfile文件及软件
百度云dockerfile大礼包链接提取码:ygx3
- QQ精品交流群
-
- 微信公众号
-