Dockerfile搭建lnmp环境

一 先分别创建对应的镜像Dockerfile文件,文件名称最好直接命名为Dockerfile

 

1.1 创建nginx镜像

创建目录nginx-1.15.5,进入目录创建Dockerfile文件

From nginx:1.15.5
#维护者信息
MAINTAINER duaijing<291201754@qq.com>
#时区
ENV TZ Asia/Shanghai
RUN date -R
#容器启动时执行指令
CMD ["nginx", "-g", "daemon off;"]

 

1.2 创建php镜像并安装对应扩展

创建目录php-7.3.29-fpm,进入目录创建Dockerfile文件

From php:7.3.29-fpm
#维护者信息
MAINTAINER duaijing<291201754@qq.com>
#时区
ENV TZ Asia/Shanghai
RUN date -R
#RUN docker-php-ext-install bcmath dom fileinfo filter ftp gd gmp hash iconv imap json mbstring mysqli odbc opcache pdo pdo_mysql pdo_odbc phar reflection session snmp soap sockets zip
#RUN docker-php-ext-install mysqli opcache pdo_mysql
WORKDIR /working
RUN apt-get update --fix-missing && apt-get install -y \
    libzip-dev libpng-dev libjpeg-dev libfreetype6-dev  \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include --with-jpeg-dir=/usr/include/jpeg \
    && docker-php-ext-install gd mysqli opcache pdo_mysql gd zip
ENV PHPREDIS_VERSION 4.0.1
ENV PHPSWOOLE_VERSION 4.2.13
RUN pecl install redis-$PHPREDIS_VERSION \
    docker-php-ext-enable redis
# install composer new
# https://getcomposer.org/installer | https://install.phpcomposer.com/installer
 RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
     && php composer-setup.php \
     && php -r "unlink('composer-setup.php');" \
     && mv composer.phar /usr/local/bin/composer \
     && composer config -g repo.packagist composer https://packagist.laravel-china.org
RUN apt-get install -y git
# clear
RUN rm -rf /var/cache/apt/* \
    && rm -rf /var/lib/apt/lists/*
RUN mkdir /var/lib/sessions \
    && chmod o=rwx -R /var/lib/sessions
#容器启动时执行指令
CMD ["php-fpm"]

 

1.3 创建mysql镜像

创建目录mysql-8.0.18,进入目录创建Dockerfile文件

From mysql:8.0.18
#维护者信息
MAINTAINER duaijing<291201754@qq.com>
#时区
ENV TZ Asia/Shanghai
RUN date -R
#容器启动时执行指令
CMD ["mysqld"]

 

二 运行镜像

 

2.1 build 镜像 镜像名称以及版本,一定要注意最后面的点,不能省略

docker build -t nginx:v1 .

如果文件名称不是标准的Dockerfile可以加参数-f

docker build -f Dockerfile文件路径 -t nginx:v1 .

2.2 可以通过单独运行容器运行参考:https://www.cnblogs.com/jingxiaoniu/p/12557663.html

2.3 通过docker-compose运行(推荐)

2.3.1 需要创建一个yaml文件,创建docker-compose.yml

version: '3.7'
services:
  nginx:
    build: ./nginx-1.15.5
    ports:
      - "8802:80" #nginx
    restart: always
    tty: true
    container_name: nginx
    volumes:
      - ~/docker/nginx/www:/usr/share/nginx/html
      - ~/docker/nginx/nginx-log:/var/log/nginx
      - ~/docker/nginx/nginx-conf:/etc/nginx
    networks:
     - lnmp-networks
  php:
    build: ./php-7.3.29-fpm
    tty: true
    restart: always
    container_name: php
    volumes:
      - ~/docker/php/php-log:/var/log/php
      - ~/docker/php/php-conf:/usr/local/etc/php
    depends_on:
      - nginx
    networks:
     - lnmp-networks
  mysql:
    build: ./mysql-8.0.18
    container_name: mysql
    tty: true
    restart: always
    ports:
      - "3309:3306" #mysql
    volumes:
      - ~/docker/mysql/mysql-conf:/etc/mysql
      - ~/docker/mysql-log:/var/log/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
    networks:
      - lnmp-networks
networks:
 lnmp-networks:

注意:因为我们上文文件名称直接就是Dockerfile,所以可以直接build,如果文件名不是Dockerfile,需要加参数指定路径并指定文件

2.3.2 最后运行

docker-compose up

注意:如果我们文件名称不是docker-compose.yml,需要加参数-f

docker-cmpose -f docker-compose.yml up 

 

以上就是今天的全部内容!

posted @ 2021-08-25 17:18  静小妞  阅读(398)  评论(0编辑  收藏  举报