一 先分别创建对应的镜像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
以上就是今天的全部内容!