Docker Compose部署Centos7服务器

368 阅读4分钟

升级Docker

卸载Docker

yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-selinux \
           docker-engine-selinux \
           docker-engine \
           container*

设置软件源

# step 1: 安装必要的一些系统工具
yum update -y (可选操作)
yum install -y yum-utils device-mapper-persistent-data lvm2 bash-completion
# Step 2: 添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
yum clean all;yum makecache
# 查询可用的安装版本
yum list docker-ce --showduplicates | sort -r
# 开始安装
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

docker-compose升级

[GitHub下载地址](github.com/docker/comp…)

# 默认地址:/usr/bin
# 授权
chmod +x /usr/bin/docker-compose

创建nginx挂载目录

页面挂载目录

mkdir /root/nginx/html

日志挂载目录

mkdir /root/nginx/logs

服务配置文件挂载目录

mkdir /root/nginx/config/conf.d

证书挂载目录

mkdir /root/nginx/cert

主配置文件挂载

vi /root/nginx/config/nginx.conf

nginx.conf内容

user  nginx;
worker_processes  1;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
  #gzip  on;
 
    include /etc/nginx/conf.d/*.conf;
}
 

创建Redis挂载目录

数据挂载目录

mkdir /root/redis/data

日志挂载目录

mkdir /root/redis/logs

配置文件挂载

vi /root/redis/conf/redis.conf

redis.conf内容

# Redis配置文件
 
#自定义密码
requirepass renbowen
# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
# 启用守护进程后,Redis会把pid写到一个pidfile中,在/var/run/redis.pid
daemonize no
 
# 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
pidfile /var/run/redis.pid
 
# 指定Redis监听端口,默认端口为6379
# 如果指定0端口,表示Redis不监听TCP连接
port 6379
 
# 绑定的主机地址
# 你可以绑定单一接口,如果没有绑定,所有接口都会监听到来的连接
# bind 127.0.0.1
# 2、关闭保护机制
protected-mode no
 
 
# 当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 0
 
# 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
# debug (很多信息, 对开发/测试比较有用)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably)
# warning (only very important / critical messages are logged)
loglevel verbose
 
# 日志记录方式,默认为标准输出,如果配置为redis为守护进程方式运行,而这里又配置为标准输出,则日志将会发送给/dev/null
logfile /logs/redis.log
 
 
# 设置数据库的数量,默认数据库为0,可以使用select <dbid>命令在连接上指定数据库id
# dbid是从0到‘databases’-1的数目
databases 16
 
################################ SNAPSHOTTING  #################################
# 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
#
#   满足以下条件将会同步数据:
#   900秒(15分钟)内有1个更改
#   300秒(5分钟)内有10个更改
#   60秒内有10000个更改
#   Note: 可以把所有“save”行注释掉,这样就取消同步操作了
 
save 900 1
save 300 10
save 60 10000
 
# 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbcompression yes
 
# 指定本地数据库文件名,默认值为dump.rdb
dbfilename dump.rdb
 
# 工作目录.
# 指定本地数据库存放目录,文件名由上一个dbfilename配置项指定
#
# 注意,这里只能指定一个目录,不能指定文件名
dir ./
 
# 指定包含其他的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各实例又拥有自己的特定配置文件
# include /path/to/local.conf
# include /path/to/other.conf

docker compose配置

创建docker-compose文件

vi /root/docker-compose.yaml

docker-compose.yaml

version: "3"

services:
  nginx:
    image: nginx:1.22.1
    container_name: nginx
    restart: always
    privileged: true
    network_mode: host
    volumes:
      - /root/nginx/html:/usr/share/nginx/html
      - /root/nginx/config/nginx.conf:/etc/nginx/nginx.conf 
      - /root/nginx/logs:/var/log/nginx 
      - /root/nginx/config/conf.d:/etc/nginx/conf.d 
      - /root/nginx/cert:/etc/nginx/cert
    ports:
      - "80:80"
      - "443:443"

  redis:
    image: redis:6.2.5
    container_name: redis
    privileged: true
    network_mode: host
    volumes:
      - /root/redis/data:/data
      - /root/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - /root/redis/logs:/logs
    command: ["redis-server","/usr/local/etc/redis/redis.conf"]
    ports:
      - 6379:6379
    environment:
      - TZ="Asia/Shanghai"

  mysql:
    image: mysql:8.0.27
    container_name: mysql
    restart: on-failure:3
    network_mode: host
    command: 
      --lower_case_table_names=1
      --group_concat_max_len=4294967295
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
    volumes:
      - /root/mysql:/var/lib/mysql
      - /root/mysqlBackup:/data/mysqlBackup
    ports:
      - "3306:3306"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码
      - MYSQL_ROOT_PASSWORD=密码
      # 创建数据库 有需要打开
      #- MYSQL_DATABASE=test

运行docker-compose

docker-compose -f /root/docker-compose.yaml up -d