使用docker-compose部署lnmp环境

使用docker-compose部署lnmp环境

中文

参考链接

https://blog.csdn.net/xiazichenxi/article/details/95652457

最终部署

路径:/root/docker-compose/lnmp

docker-compose.yml

version: "3"

services:
  mysql:
    hostname: mysql
    restart: always
    image: mysql:5.6
    container_name: mysql
    ports:
      - "3306:3306"
    volumes:
      - mysql-config:/etc/mysql
      - mysql-log:/var/log/mysql
      - mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_USER: user
      MYSQL_PASSWORD: user123
  php:
    hostname: php
    restart: always
    container_name: php
    image: php:7.3-fpm
    ports:
      - "9000:9000"
    links:
      - mysql:mysql
    volumes:
      - nginx-html:/var/www/html
      - php-config:/usr/local/etc
  nginx:
    hostname: nginx
    restart: always
    container_name: nginx
    image: nginx:1.17.0
    ports:
      - "80:80"
      - "443:443"
    links:
      - "php:php"
    volumes:
      - nginx-config:/etc/nginx
      - nginx-log:/var/log/nginx
      - nginx-html:/usr/share/nginx/html

volumes:
  mysql-config:
  mysql-log:
  mysql-data:
  nginx-html:
  php-config:
  nginx-config:
  nginx-log:

部署成功后,在/var/lib/docker/volumes目录下,增加下面的目录:

lnmp_mysql-config  lnmp_mysql-data  lnmp_mysql-log  lnmp_nginx-config  lnmp_nginx-html  lnmp_nginx-log  lnmp_php-config

估计前缀lnmp是跟目录有关系。

修改文件,有两种方式,一种是在docker外,/var/lib/docker/volumes目录下直接修改。另外一种,使用exec进入容器,再修改。

修改nginx的配置nginx-config

server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm index.php;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location ~ \.php$ {
        fastcgi_pass   php:9000; #这里php就是php容器的名字
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name; #此处配置要注意,有坑
        include        fastcgi_params;
    }
}

升级版本

使用上面的配置,但是增加了build过程。

目录:

lnmp/
├── docker-compose.yml
└── php
    └── Dockerfile

更改docker-compose.yml文件,php镜像那块 ,image替换如下:

build:
      context: ./php
      dockerfile: Dockerfile

Dockerfile文件内容:

FROM php:7.0-fpm
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng-dev \
        libmemcached-dev \
        zlib1g-dev \
        libcurl4-openssl-dev \
        libxml2-dev \
        --no-install-recommends && rm -rf /var/lib/apt/lists/* \
    && docker-php-ext-install -j$(nproc) \
        iconv mcrypt gettext curl mysqli pdo pdo_mysql zip \
        mbstring bcmath opcache xml simplexml sockets hash soap \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd

CMD ["php-fpm", "-F"]