Docker Compose部署lnmp

参考:https://github.com/micooz/docker-lnmp

一、简介

  使用Dcoekr镜像部署lnmp(Linux、Nginx、MySQL、PHP7)。

  1.1 结构     

app
└── src
    └── index.php
docker-compose.yml 
etc
└── localtime
mysql
├── conf
│   └── my.cnf
└── mysqldb
nginx
├── ca
│   ├── server.crt
│   └── server.key
├── conf.d
│   └── test.conf
└── nginx.conf
php-fpm
├── Dockerfile
├── php-7.2.3.tar.gz
├── php-fpm.conf
├── php.ini
├── var
│   ├── log
│   │   
│   └── run
│     
└── www.conf

# app 静态文件
# /etc/localtime 同步时区
# mysqldb 数据存储

  

二、部署

  2.1 php-fpm Dockerfile  

FROM centos:latest
MAINTAINER bigberg

RUN yum -y install gcc gcc-c++ gd-devel libxml2 libxml2-devel libcurl-devel \
    openssl openssl-devel curl curl-devel libjpeg libjpeg-devel libpng  \
    freestyle freestyle-devel pcre pcre-devel libxslt libxslt-devel bzip2 bzip2-devel
ADD php-7.2.3.tar.gz /tmp/
RUN cd /tmp/php-7.2.3 \
    && ./configure --prefix=/usr/local/php \
    --with-curl --with-freetype-dir --with-gd \
    --with-gettext --with-iconv-dir --with-kerberos \
    --with-libdir=lib64 --with-libxml-dir --with-mysqli \
    --with-openssl --with-pcre-regex --with-pdo-mysql \
    --with-pdo-sqlite --with-pear --with-png-dir \
    --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib \
    --with-bz2 --with-mhash --enable-fpm --enable-bcmath \
    --enable-libxml --enable-inline-optimization --enable-gd-native-ttf \
    --enable-mbregex --enable-mbstring --enable-opcache \
    --enable-pcntl --enable-shmop --enable-soap --enable-sockets \
    --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip \
    && make && make install \
    && cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm \
    && chmod a+x /etc/init.d/php-fpm \
    && groupadd -g 1001 www \
    && useradd -g 1001 -u 1001 www

EXPOSE 9000
CMD ["/usr/local/php/sbin/php-fpm", "--nodaemonize"]
Dockerfile

  2.2 docker-compose.yml

version: '3'
services:
  # web server
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      # app,挂在目录
      - ./app/src:/usr/share/nginx/html
      # ngnix configs
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./nginx/conf.d/:/etc/nginx/conf.d/:ro
      # certificates
      - ./nginx/ca/server.crt/:/etc/nginx/server.crt:ro
      - ./nginx/ca/server.key/:/etc/nginx/server.key:ro
      - ./etc/localtime:/etc/localtime:ro
    links:
      - php:php-cgi

  # PHP-FPM
  php:
    build: ./php-fpm
    volumes:
      - ./app/src:/usr/share/nginx/html
      # php.ini
      - ./php-fpm/php.ini:/usr/local/php/etc/php.ini:ro
      - ./php-fpm/php-fpm.conf:/usr/local/php/etc/php-fpm.conf:ro
      - ./php-fpm/www.conf:/usr/local/php/etc/php-fpm.d/www.conf:ro
      - ./php-fpm/var:/usr/local/php/var
      - ./etc/localtime:/etc/localtime:ro
    links:
      - mysql:mysql
    ports:
      - "9000:9000"
    stdin_open: true
    tty: true

  # database
  mysql:
    image: mysql:latest
    ports:
      # Allow client to access 3306
      - "3306:3306"
    volumes:
      # my.cnf
      - ./mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
      # your data will be stored in ./mysql
      - ./mysql/mysqldb:/var/lib/mysql
      - ./etc/localtime:/etc/localtime:ro
    environment:
      - MYSQL_ROOT_PASSWORD=123456
View Code

  2.3 构建  

$ docker-compose up --build

  2.4 查看

$ docker-compose ps
       Name                      Command               State                    Ports                  
-------------------------------------------------------------------------------------------------------
composelnmp_mysql_1   docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp                  
composelnmp_nginx_1   nginx -g daemon off;             Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
composelnmp_php_1     /usr/local/php/sbin/php-fp ...   Up      0.0.0.0:9000->9000/tcp

  相关文档:https://github.com/Bigberg/docker/tree/master/compose-lnmp

 

posted @ 2018-03-06 13:48  Bigberg  阅读(1643)  评论(0编辑  收藏  举报