多个docker镜像部署lnmp开发环境

与其说是lnmp环境,还不如说是3个docker环境的mysql、php和nginx镜像。下面我们将以依次按照mysql、php和nginx镜像的顺序描述它们的搭建过程:

环境要求:
docker-compose
docker-ce
centos7 2CPU 4Gb 50G

1、mysql

这里采用官方mysql:5.7的镜像,首先需要创建mysqld.conf文件,生产环境的mysql配置需要自行优化,这里囧供开发环境使用。

[[email protected] lnmp]# cat /data/mysql/conf/mysqld.cnf |grep -v ^#|grep -v ^$
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
max_connections=200
character-set-server=utf8
skip-name-resolve
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
default-time_zone=‘+8:00‘
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
[[email protected] lnmp]#

启动mysql容器

docker run --name lnmp_mysql -p 3306:3306 --privileged=true -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf:/etc/mysql/mysql.conf.d -e MYSQL_ROOT_PASSWORD=root -d 10.0.2.10/library/mysql:5.7

说明:10.0.2.10/library/mysql:5.7 这个镜像其实和 mysql:5.7官方的一样,只是将他打了个tag push到自己的harbor仓库永久保存,方便下载使用。

2、php

这里采用Dockerfile的模式,基于centos:7的官方镜像制作,直接上Dockerfile-php文件:

[[email protected] lnmp]# cat Dockerfile-php
From centos:7
MAINTAINER zhujinbing
RUN yum install epel-release -y && \
yum install -y gcc gcc-c++ make gd-devel libxml2-devel \
libcurl-devel libjpeg-devel libjpeg libpng-devel libpng openssl-devel \
libmcrypt-devel libmcrypt mcrypt mhash libxslt-devel libtidy-devel autoconf \
iproute net-tools telnet wget curl && \
yum clean all && \
rm -rf /var/cache/yum/*

ADD php-5.6.36.tar.gz /
RUN 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

RUN cp /php-5.6.36/php.ini-production /usr/local/php/etc/php.ini
RUN cp /php-5.6.36/sapi/fpm/php-fpm.conf.in /usr/local/php/etc/php-fpm.conf
RUN useradd -M -s /sbin/nologin php
RUN sed -i -e ‘s\;pid = run/php-fpm.pid\pid = run/php-fpm.pid\g‘ -e ‘s\listen = 127.0.0.1:9000\listen = 0.0.0.0:9000\g‘ /usr/local/php/etc/php-fpm.conf
RUN sed -i ‘s\;daemonize = yes\daemonize = no\g‘ /usr/local/php/etc/php-fpm.conf
RUN sed -i ‘s\;error_log = log/php-fpm.log\error_log = /usr/local/php/log/php-fpm.log\g‘ /usr/local/php/etc/php-fpm.conf
RUN sed -i -e ‘s\user = @[email protected]\user = php\g‘ -e ‘s\group = @[email protected]\group = php\g‘ /usr/local/php/etc/php-fpm.conf
RUN sed -i -e ‘s\;date.timezone =\date.timezone = Asia/Shanghai\g‘ /usr/local/php/etc/php.ini

RUN 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:/usr/local/php/bin
#COPY php.ini /usr/local/php/etc/
#COPY php-fpm.conf /usr/local/php/etc/
WORKDIR /usr/local/php
EXPOSE 9000
CMD ["/usr/local/php/sbin/php-fpm"]
[[email protected] lnmp]#

php-5.6.36.tar.gz文件自行从官网php.net下载,放到dockfile-php同一级目录。
curl -L "https://www.php.net/distributions/php-5.6.36.tar.gz" -o php-5.6.36.tar.gz

根据dockerfile-php文件制作自己的镜像文件:
docker build -t 10.0.2.10/library/php:5.6.36 -f Dockerfile-php .

看到后面Successfully说明镜像制作成功:

下面我们看一下刚刚制作的镜像:

启动php容器:

docker run --name lnmp_php --link=lnmp_mysql:lnmp_mysql -d -v /root/lnmp/wwwroot:/home/wwwroot -v /root/lnmp/wwwlogs:/home/wwwlogs -v /root/lnmp/tmp:/tmp -v /etc/localtime:/etc/localtime --privileged=true 10.0.2.10/library/php:5.6.36

3、nginx

这里采用官方nginx:1.15.11来启动。
先在宿主机创建 /root/lnmp/nginx_conf/default.conf配置文件:
[[email protected] lnmp]# cat /root/lnmp/nginx_conf/default.conf |grep -v ^#|grep -v ^$
server {
listen 80;
server_name localhost;
access_log /home/wwwlogs/access.log main;
location / {
root /home/wwwroot;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ .php$ {
root /home/wwwroot;
fastcgi_pass phpfpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
[[email protected] lnmp]#

启动nginx容器

docker run \
--name lnmp_nginx \
--link=lnmp_php:phpfpm \
--link=lnmp_mysql:mysql \
-d -p 8088:80 \
-v /root/lnmp/wwwroot:/home/wwwroot \
-v /root/lnmp/nginx_conf:/etc/nginx/conf.d \
-v /root/lnmp/wwwlogs:/home/wwwlogs \
10.0.2.10/library/nginx:1.15.11

说明:10.0.2.10/library/nginx:1.15.11 这个镜像其实和官方 nginx:1.15.11的一样,只是将他打了个tag push到自己的harbor仓库永久保存,方便下载使用。

镜像和容器信息截图

1、镜像信息:

2、容器信息:

测试验收

1、静态页面测试
[[email protected] lnmp]# cat wwwroot/index.html
hello php

2、php动态页面测试
[[email protected] lnmp]# cat wwwroot/index.php
<?php
echo "hello php";
phpinfo();
?>

3、数据库连接测试
[[email protected] lnmp]# cat wwwroot/mysql.php
<form action="" method="post">
<select name="host">
<option value="localhost" selected>localhost</option>
<option value="127.0.0.1">127.0.0.1</option>
<option value="lnmp_mysql">lnmp_mysql</option>
</select>
<br><br>
user:<input type="text" name="user" value=""><br><br>
pwd :<input type="password" name="pwd" value=""><br><br>
<input type="submit" value="connent">
<input type="reset" value="reset">
</form>
<?php
error_reporting(~E_ALL);
$host = $_POST[‘host‘];
$user = $_POST[‘user‘];
$pwd = $_POST[‘pwd‘];
if(isset($_POST[‘host‘]) && isset($_POST[‘user‘]) && isset($_POST[‘pwd‘])){
if(strlen($host)<1 or strlen($user)<1 or strlen($pwd)<1){
echo "请完善数据库链接信息";
exit(0);
}
$conn = mysql_connect($host, $user, $pwd) or die("Error数据库连接失败");
if($conn){
echo "OK数据库连接成功";
}
}
?>

参考链接:
https://idc.wanyunshuju.com/Dr/572.html
https://www.cnblogs.com/mushou/p/9489479.html/php-5.6.36/sapi/fpm/php-fpm.conf.in
https://blog.51cto.com/yw666/1890598
https://www.cnblogs.com/myall/p/4792402.html

原文地址:https://blog.51cto.com/13354560/2380141

时间: 2024-10-10 02:36:00

多个docker镜像部署lnmp开发环境的相关文章

Vagrant 部署python开发环境

Vagrant简介 Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境.它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境. 在Windows下,也可以方便地使用Linux环境开发程序 官方文档 http://docs.vagrantup.com/v2/getting-started/index.html box https://vagrantcloud.com/discover/featured 准备工作 下载安装 VirtualBox

如何使用Docker部署PHP开发环境

本文主要介绍了如何使用Docker构建PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊.推荐PHP开发者阅读.希望对大家有所帮助. 环境部署一直是一个很大的问题,无论是开发环境还是生产环境,但是 Docker 将开发环境和生产环境以轻量级方式打包,提供了一致的环境.极大的提升了开发部署一致性.当然,实际情况并没有这么简单,因为生产环境和开发环境的配置是完全不同的,比如日志等的问题都需要单独配置,但是至少比以前更加简单方便了,这里以 PHP 开

Docker秒搭建Php7开发环境

原文:Docker秒搭建Php7开发环境 一直听说Docker比较厉害,但是一直没有了解,今天在哔哩哔哩上刷了一下入门课后,简直发现新大陆般,Docker的强大真的了解太晚了.这篇使用Docker搭建php7环境的文章需要一点入门知识.下面开始. 环境 首先安装Docker,无论你是Windows还是Linux.MocOS都可以.安装Docker自行百度. Docker镜像源 访问https://hub.docker.com即可,它是镜像大仓库. 安装Ngnix镜像 输入: docker pul

使用Vmware虚拟机部署Swift开发环境之Mac OS X系统安装

 一.使用VMware虚拟机部署Swift开发环境所需工具: Vmware Workstation 10.0虚拟机软件 VM安装Mac解锁工具Unlock 苹果操作系统(Mac OS X Mavericks 10.9.4) 下载地址:http://pan.baidu.com/s/1qWLkffQ 密码:ewb2 二.VMware Workstation 10上安装并使用Mac OS X 10.9 1.安装VMware Workstation 10虚拟机,安装过程不再赘述. 2.使用Mac解锁

Windows 7, VMware Workstation10部署IOS开发环境[Mac OS X Server10.6系统安装]

Windows 7, VMware Workstation10部署IOS开发环境 Mac OS X Server10.6系统安装 基本情况是Windows7 专业版32位系统,VMware Workstation10.0虚拟机,Mac OS X Server10.6操作系统.Mac OS是一套运行于苹果Macintosh系列电脑上的操作系统.Mac OS是首个在商用领域成功的图形用户界面.现行的最新的系统版本是OS X 10.10 Yosemite,本文介绍的是Mac OS X Server10

创建和部署虚拟化开发环境

Vagrant 是一个基于 Ruby 的工具,用于创建和部署虚拟化开发环境.它使用 Oracle 的开源 VirtualBox 虚拟化系统,使用Chef 创建自动化虚拟环境. 安装方法: sudo gem install vagrantvagrant box add base http://files.vagrantup.com/base.boxmkdir vagrantvagrant initvagrant up

Vagrant 创建和部署虚拟化开发环境

Vagrant 是一个基于 Ruby 的工具,用于创建和部署虚拟化开发环境.它使用 Oracle 的开源 VirtualBox 虚拟化系统,使用Chef 创建自动化虚拟环境. 安装方法: sudo gem install vagrantvagrant box add base http://files.vagrantup.com/base.boxmkdir vagrantvagrant initvagrant up

Apache Spark1.1.0部署与开发环境搭建

Spark是Apache公司推出的一种基于Hadoop Distributed File System(HDFS)的并行计算架构.与MapReduce不同,Spark并不局限于编写map和reduce两个方法,其提供了更为强大的内存计算(in-memory computing)模型,使得用户可以通过编程将数据读取到集群的内存当中,并且可以方便用户快速地重复查询,非常适合用于实现机器学习算法.本文将介绍Apache Spark1.1.0的部署与开发环境搭建. 0. 准备 出于学习目的,本文将Spa

部署android开发环境总结

部署android开发环境总结Ubuntu 14.04.5 LTS \n \landroid-4.0.1_r1 source build/envsetup.shchoosecombo选择 release, full, eng . 总体过程:sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-d