DockerFile-快速构建(LAMP/LNMP/LNMT环境)

2019年8月15日15:09:17 发表评论 2,251 views
摘要

本文主要是利用wordpres,对之前docker的一个总结,通过自定义镜像的方式,对我们LNMP架构进行部署,中间我们使用dockerfile进行简单的编排,使docker构建变得相当简单,接下来一起动手试试吧,几分钟就能搭建自己专属的博客。

广告也精彩

本文主要是利用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 .

DockerFile-快速构建(LAMP/LNMP/LNMT环境)

二、快速部署LNMP (nginx+php)

1,你要知道用哪个镜像
2,镜像到底怎么用(dockerHub)
3,wordpres 是php开源软件
4,数据的持久化

1,自定义网络

docker network create dgstack

DockerFile-快速构建(LAMP/LNMP/LNMT环境)

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 卷 看下面截图

DockerFile-快速构建(LAMP/LNMP/LNMT环境)
或者用 -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/* ./

DockerFile-快速构建(LAMP/LNMP/LNMT环境)
DockerFile-快速构建(LAMP/LNMP/LNMT环境)
DockerFile-快速构建(LAMP/LNMP/LNMT环境)
DockerFile-快速构建(LAMP/LNMP/LNMT环境)

另外还测试个积分商城
DockerFile-快速构建(LAMP/LNMP/LNMT环境)

快速部署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精品交流群
  • weinxin
  • 微信公众号
  • weinxin
广告也精彩
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: