docker-compose安装lnmp环境+redis

文章目录

  • 前言
  • 一、最终成果
  • 二、安装步骤
    • 1.安装目录概览
    • 2.安装详细
  • 如何做测试和线上环境统一
  • 如何做docker的迁移
  • 遇到的问题
      • 感谢


前言

安装版本看下面截图,docker-compose版本3.3,安装的整个过程采坑。前提要熟悉docker & docker-compose & yml文件的编写规则 & dockerfile的相关指令


一、最终成果

docker-compose安装lnmp环境+redis_第1张图片

二、安装步骤

1.安装目录概览

docker-compose安装lnmp环境+redis_第2张图片
从上面的截图可以看出,基本上将运维需要的文件都映射到容器外部,方便统一管理和修改了。
如果还需要映射其他的文件,可以修改docker-compose.yml文件。docker重新构建真的非常舒服效率。

2.安装详细

  1. 编写yml文件
  2. 创建容器外部目录 以及 需要映射到容器内部的文件,比如php.ini mysqld.conf等等。
  3. 关键的几个映射问题:需要将配置文件以及日志目录映射出来

以下为yml文件

version: '3.3'
services: 
 nginx: 
  build: ./dockerfile/nginx-1.15.5
  ports: 
   - "80:80" #nginx
  restart: always
  tty: true #作为终端的配置,作用不是很清楚,据说可以防止composer启动失败
  container_name: nginx
  volumes: 
   - /home/docker-lnmp-dockerfile/config/nginx/conf.d:/etc/nginx/conf.d
   - /home/docker-lnmp-dockerfile/config/nginx/nginx.conf:/etc/nginx/nginx.conf
   - /home/docker-lnmp-dockerfile/logs/nginx:/var/log/nginx
   - /mnt/hgfs:/var/www/html
  networks:
   - lnmp-networks
 php7:
  build: ./dockerfile/php-7.2-fpm
  tty: true
  restart: always
  container_name: php7
  volumes: 
   - /home/docker-lnmp-dockerfile/config/php/php.ini:/usr/local/etc/php/php.ini
   - /home/docker-lnmp-dockerfile/config/php/www.conf:/usr/local/etc/php-fpm.d/www.conf
   - /home/docker-lnmp-dockerfile/logs/php:/var/log/php
   - /mnt/hgfs:/var/www/html   
  depends_on: #解决启动依赖的问题
   - nginx
  networks:
   - lnmp-networks
 mysql:
  build: ./dockerfile/mysql-5.6
  container_name: mysql
  tty: true
  restart: always
  ports:
   - "3306:3306" #mysql
  volumes:
   - /home/docker-lnmp-dockerfile/mysql:/var/lib/mysql
   - /home/docker-lnmp-dockerfile/config/mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
   - /home/docker-lnmp-dockerfile/logs/mysql:/var/log/mysql
   - /home/docker-lnmp-dockerfile/mysqlback:/data/mysqlback
  environment:
   MYSQL_ROOT_PASSWORD: root
  networks:
   - lnmp-networks
 redis:
  build: ./dockerfile/redis-5.0.5
  container_name: redis
  tty: true
  restart: always
  volumes:
   - /home/docker-lnmp-dockerfile/config/redis/redis.conf:/etc/redis/redis.conf
   - /home/docker-lnmp-dockerfile/redis:/var/lib/redis
   - /home/docker-lnmp-dockerfile/logs/redis:/var/log/redis
 # command:
   #指定配置文件, 写在dockerfile文件中,这里不指定
  # redis-server /etc/redis/redis.conf
  ports:
   - "6379:6379"
  networks:
   - lnmp-networks
networks:
 lnmp-networks:

如何做测试和线上环境统一

如何做docker的迁移

遇到的问题

  1. redis或者mysql无限重启
    解决方案:出问题查看日志,docker-compose logs 【容器name/id】。
    我遇到的这类问题都是因为配置文件的问题导致。特别是redis中有个配置,和常规的不太一样。

  2. redis或mysql外部无法连接
    这类问题,一般都是因为端口映射,以及配置文件中配置了bind,所以对配置文件的每行配置的作用有个了解非常重要

  3. 如何确定外部配置文件映射的文件,容器中比如redis就一定会用到?
    关于这点,对于redis可以手动指定,对于其他的比如nginx/mysql,一般都有个默认的地方,需要你自己到容器中查看会用到哪个文件(比如mysqld启动默认会用哪个配置文件),你再映射出来。所以这些东西不是按部就班的。

  4. 如何重新构建容器
    当使用docker-compose构建了多个容器后,如果发现需要重新构建某一个容器的情况,可以执行以下操作
    docker-compose stop 【id/name】停止某个容器
    docker-compose rm 【id/name】删除
    docker-compose up -d --force-recreate
    docker-compose up -d --build
    选项包括:
    -d 在后台运行服务容器
    –no-color 不使用颜色来区分不同的服务的控制输出
    –no-deps 不启动服务所链接的容器
    –force-recreate 强制重新创建容器,不能与–no-recreate同时使用
    –no-recreate 如果容器已经存在,则不重新创建,不能与–force-recreate同时使用
    –no-build 不自动构建缺失的服务镜像
    –build 在启动容器前构建服务镜像
    –abort-on-container-exit 停止所有容器,如果任何一个容器被停止,不能与-d同时使用
    -t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)
    –remove-orphans 删除服务中没有在compose文件中定义的容器
    –scale SERVICE=NUM 设置服务运行容器的个数,将覆盖在compose中通过scale指定的参数

感谢

以下链接的作者。具体的代码也可以参考以下链接。
https://zhuanlan.zhihu.com/p/101945958
https://github.com/zhangdejian/docker_lnmp
https://github.com/voocel/docker-lnmp/tree/v2

你可能感兴趣的:(docker)