标签:分享 build 服务器 tar.gz doc from creat 结束 直接
NGINX一、准备好源码包和配置文件
1、目录结构如下
[root@ecs-5704-0004 nginx]# tree ./
./
├── Dockerfile
├── nginx-1.14.2.tar.gz
└── nginx.conf
2、nginx.conf里的配置信息主要如下
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass lnmp_php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
其他的配置信息都是默认的配置,主要更改这个位置,它是与PHP建立连接的location模块,其中fastcgi_pass相当于proxy_pass,lnmp_php是我们后面创建php的docker名字,因为我后面会把所有的服务器都加入到同一个网络中,所以可以直接这么写。
3、写Dockerfile,内容如下:
FROM docker.io/centos
LABEL "auth"="Uncle.Joker" "mail"="unclejoker520@163.com"
ENV TIME_ZOME Asia/Shanghai
RUN yum install -y gcc gcc-c++ make openssl-devel prce-devel
ADD nginx-1.14.2.tar.gz /opt/
RUN cd /opt/nginx-1.14.2 && ./configure --prefix=/usr/local/nginx && make -j 4 && make install
#--清理系统
RUN rm -rf /opt/nginx* && yum clean all && echo "${TIME_ZOME}" > /etc/timezone && ln -sf /usr/share/zoneinfo/${TIME_ZOME} /etc/localtime
COPY nginx.conf /usr/local/nginx/conf/
WORKDIR /usr/local/nginx/
EXPOSE 80
CMD ["./sbin/nginx","-g","daemon off;"]
daemon off的作用就是让nginx在前台运行,因为docker和应用是共存亡的,如果是在后台运行,运行结束后,docker会认为你这个应用已经运行完了,所以docker就结束了。
4、Build镜像
cd /root/dockerfile/nginx && docker bulid -t mynginx:1.14.2 .
然后查看镜像
# docker image ls mynginx
mynginx 1.14.2 ad10dee662f1 46 hours ago 392 MB
5、运行镜像
# 运行镜像之前先创建一个网络
# docker network create lnmp
# 运行镜像
# docker run -itd --name lnmp_nginx --network lnmp -p 8888:80 -v /root/dockerfile/app/php/wwwroot:/usr/local/nginx/html mynginx:1.14.2
6、测试一下能否正常访问
# cd /root/dockerfile/app/php/wwwroot && echo ‘Dockerfile test ‘ >index.html
一、准备源码包和配置
1、目录结构如下
[root@ecs-5704-0004 php]# tree ./
./
├── Dockerfile
├── php-7.0.32.tar.gz
└── php.ini
2、Dockerfile里的内容如下:
FROM docker.io/centos
LABEL ‘auth‘=‘Uncle.Joke‘ ‘mail‘=‘unclejoker520@163.com‘
ENV TIME_ZOME Asia/Shanghai
RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel
ADD php-7.0.32.tar.gz /opt/
RUN cd /opt/php-7.0.32 && ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql --with-mysqli --with-openssl --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-iconv --enable-fpm --enable-zip --enable-mbstring && make -j 4 && make install
RUN cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && sed -i ‘s/;daemonize = yes/daemonize = no/g‘ /usr/local/php/etc/php-fpm.conf && cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf && sed -i ‘s/127.0.0.1/0.0.0.0/g‘ /usr/local/php/etc/php-fpm.d/www.conf && echo "${TIME_ZOME}" > /etc/timezone && ln -sf /usr/share/zoneinfo/${TIME_ZOME} /etc/localtime
RUN rm -rf /opt/php* && yum clean all
WORKDIR /usr/local/php/
EXPOSE 9000
CMD ["./sbin/php-fpm","-c","/usr/local/php/etc/php-fpm.conf"]
3、Build镜像
# cd /root/dockerfile/php && docker build -t myphp:7.0.32_v3 .
查看一下镜像
myphp 7.0.32_v3 b3c32cede454 43 hours ago 1.05 GB
4、运行PHP
# run -itd --name lnmp_php --network lnmp -v /root/dockerfile/app/php/wwwroot:/usr/local/nginx/html myphp:7.0.32_v3
mysql没有去做专门的源码编译,太慢了,不过可以下载二进制包进行,和上面nginx的Dockerfile配置差不到多少,我这里就直接拉取的官方mysql5.7的镜像
1、创建一个存储卷
# docker volume create mysql-volume
2、拉去镜像启动容器
# docker run -itd --name lnmp_mysql --network lnmp -p 3306:3306 -v mysql-volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=lnmp123456 docker.io/centos/mysql-57-centos7
官方镜像需要在拉去的时候指定一个密码
3、测试创建数据库
# docker exec lnmp_mysql sh -c ‘exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e"create database wordpress"‘
4、查看数据库
# docker exec lnmp_mysql sh -c ‘exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e"show databases"‘docker exec lnmp_mysql sh -c ‘exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e"show databases"‘
5、可以在本地查看一下是否同步
# ls /var/lib/docker/volumes/mysql-volume/_data/
标签:分享 build 服务器 tar.gz doc from creat 结束 直接
原文地址:http://blog.51cto.com/7834466/2341381