脚本一键式启动Nginx、Mysql、Redis

此脚本包含拉取镜像、数据卷挂载、容器启动三大部分,可一键式安装三大环境

新建一个depoy.sh文件在服务器上,然后复制以下内容。

给脚本文件添加执行权限

chmod +x depoy.sh # 文件的当前目录下

如果需要修改数据库MYSQL密码和Reids密码  

MYSQL_ROOT_PASSWORD="1459Hyh."
requirepass 1459Hyh.
#!/bin/bash

# 1️⃣ 检查是否安装 Docker & Docker Compose
echo " 检查 Docker 是否已安装..."
if ! command -v docker &> /dev/null; then
    echo "❌ Docker 未安装,正在安装..."
    sudo apt update && sudo apt install -y docker.io
    sudo systemctl start docker && sudo systemctl enable docker
else
    echo "✅ Docker 已安装"
fi

# 设置 MySQL 相关参数
MYSQL_VERSION="8.0"
MYSQL_CONTAINER_NAME="mysql"
MYSQL_ROOT_PASSWORD="1459Hyh."
MYSQL_PORT=3306
MYSQL_DATA_DIR="/temp/mysql/data"
MYSQL_CONF_DIR="/temp/mysql/conf"
MYSQL_CONF_FILE="$MYSQL_CONF_DIR/my.cnf"

# 设置 Redis 相关参数
REDIS_VERSION="7"
REDIS_CONTAINER_NAME="redis"
REDIS_PORT=6379
REDIS_DATA_DIR="/temp/redis/data"
REDIS_CONF_DIR="/temp/redis/conf"
REDIS_CONF_FILE="$REDIS_CONF_DIR/redis.conf"

# 设置 Nginx 相关参数
NGINX_VERSION="latest"
NGINX_CONTAINER_NAME="nginx"
NGINX_PORT=80
NGINX_CONF_DIR="/temp/nginx/conf"
NGINX_LOG_DIR="/temp/nginx/logs"
NGINX_HTML_DIR="/temp/nginx/html"
NGINX_CONF_FILE="$NGINX_CONF_DIR/default.conf"

# 创建目录
echo "Creating directories..."
mkdir -p $MYSQL_DATA_DIR $MYSQL_CONF_DIR
mkdir -p $REDIS_DATA_DIR $REDIS_CONF_DIR
mkdir -p $NGINX_CONF_DIR $NGINX_LOG_DIR $NGINX_HTML_DIR

# 生成 MySQL 配置文件
echo "Generating MySQL configuration..."
cat > $MYSQL_CONF_FILE < $REDIS_CONF_FILE < $NGINX_CONF_FILE </dev/null 2>&1
docker rm $MYSQL_CONTAINER_NAME $REDIS_CONTAINER_NAME $NGINX_CONTAINER_NAME >/dev/null 2>&1

# 拉取镜像
echo "Pulling Docker images..."
docker pull mysql:$MYSQL_VERSION
docker pull redis:$REDIS_VERSION
docker pull nginx:$NGINX_VERSION

# 启动 MySQL
echo "Starting MySQL..."
docker run -d \
  --name $MYSQL_CONTAINER_NAME \
  -p $MYSQL_PORT:3306 \
  -v $MYSQL_DATA_DIR:/var/lib/mysql \
  -v $MYSQL_CONF_FILE:/etc/mysql/my.cnf \
  -e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD \
  --restart=always \
  mysql:$MYSQL_VERSION

# 启动 Redis
echo "Starting Redis..."
docker run -d \
  --name $REDIS_CONTAINER_NAME \
  -p $REDIS_PORT:6379 \
  -v $REDIS_DATA_DIR:/data \
  -v $REDIS_CONF_FILE:/etc/redis/redis.conf \
  --restart=always \
  redis:$REDIS_VERSION \
  redis-server /etc/redis/redis.conf

# 启动 Nginx
echo "Starting Nginx..."
docker run -d \
  --name $NGINX_CONTAINER_NAME \
  -p $NGINX_PORT:80 \
  -v $NGINX_CONF_FILE:/etc/nginx/conf.d/default.conf \
  -v $NGINX_LOG_DIR:/var/log/nginx \
  -v $NGINX_HTML_DIR:/usr/share/nginx/html \
  --restart=always \
  nginx:$NGINX_VERSION

echo "All services started successfully!"

你可能感兴趣的:(nginx,mysql,redis,容器)