此脚本包含拉取镜像、数据卷挂载、容器启动三大部分,可一键式安装三大环境
新建一个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 <<EOF
[mysqld]
bind-address = 0.0.0.0
default_authentication_plugin = mysql_native_password
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
EOF
# 生成 Redis 配置文件
echo "Generating Redis configuration..."
cat > $REDIS_CONF_FILE <<EOF
bind 0.0.0.0
protected-mode no
requirepass 1459Hyh.
appendonly yes
EOF
# 生成 Nginx 配置文件
echo "Generating Nginx configuration..."
cat > $NGINX_CONF_FILE <<EOF
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}
EOF
# 移除已有容器
echo "Removing existing containers if they exist..."
docker stop $MYSQL_CONTAINER_NAME $REDIS_CONTAINER_NAME $NGINX_CONTAINER_NAME >/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!"