使用Docker部署DashDot服务器仪表盘和Drupal

DashDot是一款简单、实用的开源现代服务器仪表盘,主要应用于小型 VPS服务器它是一个界面非常漂亮的监控服务器面板!

1、拉取Dashdot镜像

bash 复制代码
 docker pull  mauricenino/dashdot

2. 部署DashDot应用

bash 复制代码
创建部署目录
mkdir -p /data/dashdot
cd  /data/dashdot

使用docker-cli创建Dashdot容器

bash 复制代码
docker  run  -d  \
  -p 8987:3001 \
  -v /etc/os-release:/etc/os-release:ro \
  -v /proc/1/ns/net:/mnt/host_ns_net:ro \
  --privileged \
  mauricenino/dashdot

使用docker compose方式快速创建Dashdot容器

bash 复制代码
编辑docker-compose.yaml文件

version: '3'
services:
  dashdot:
    image: mauricenino/dashdot
    ports:
      - 8987:3001
    volumes:
      - /etc/os-release:/etc/os-release:ro
      - /proc/1/ns/net:/mnt/host_ns_net:ro
    privileged: true

运行

bash 复制代码
docker compose up -d

地访问DashDot服务

访问地址:http://ip:8987

在浏览器可以访问Dashdot服务器仪表盘首页。可以看出它识别出我的CPU ,内存,硬盘等信息

1、拉取Drupal镜像

bash 复制代码
获取Drupal镜像
docker pull drupal:latest
bash 复制代码
!/bin/bash
# 创建Drupal临时容器
docker run --name drupal_temp -p 8080:80 -d drupal:latest
# 压缩容器内文件并输出到宿主机
docker exec drupal_temp tar -czf - -C /var/www/html . > ~/drupal_files.tar.gz
# 解压到宿主机目录
mkdir -p ~/drupal_backup && tar -xzf ~/drupal_files.tar.gz -C /projects/drupal/web
# 清理临时容器
docker rm -f drupal_temp

执行完毕后,容器内的代码就安全地"搬迁"到了宿主机,为持久化打下了基础。

第三步:编写Docker Compose配置文件

接下来需要编写docker-compose.yml文件,这是整个部署的核心:

docker-compose.yml

bash 复制代码
version: '3.8'

services:
  drupal:
    image: drupal:latest
    container_name: drupal
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ~/drupal/web:/var/www/html
      - ~/drupal/modules:/var/www/html/modules
      - ~/drupal/themes:/var/www/html/themes
      - ~/drupal/sites:/var/www/html/sites
    depends_on:
      - mariadb
    environment:
      DRUPAL_DATABASE_HOST: mariadb
      DRUPAL_DATABASE_NAME: drupal
      DRUPAL_DATABASE_USER: drupaluser
      DRUPAL_DATABASE_PASSWORD: drupaluser
      DRUPAL_PROFILE: standard
    networks:
      - drupal_network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 10s
      retries: 3

  mariadb:
    image: mariadb:latest
    container_name: mariadb
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: drupal
      MYSQL_USER: drupaluser
      MYSQL_PASSWORD: drupaluser
      MYSQL_ROOT_PASSWORD: rootpassword123
      TZ: Asia/Shanghai
    volumes:
      - mariadb_data:/var/lib/mysql
      - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3306:3306"
    networks:
      - drupal_network
    command:
      - "--character-set-server=utf8mb4"
      - "--collation-server=utf8mb4_unicode_ci"
      - "--max_allowed_packet=256M"
      - "--innodb_buffer_pool_size=256M"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10

volumes:
  mariadb_data:
    driver: local

networks:
  drupal_network:
    external: true
bash 复制代码
1. 创建外部网络(如果不存在)
# 创建网络
docker network create drupal_network
# 查看网络
docker network ls
2. 创建必要的目录
# 创建项目目录结构
mkdir -p ~/drupal/{web,modules,themes,sites,mysql}
  1. 创建 MySQL 配置文件
bash 复制代码
# 创建 MySQL 配置文件
cat > ~/drupal/mysql/my.cnf << 'EOF'
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
max_allowed_packet = 256M
innodb_buffer_pool_size = 256M
innodb_log_file_size = 128M
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/slow.log
long_query_time = 2

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4
EOF
相关推荐
掘根2 分钟前
【JSONRpc项目】项目前置准备
服务器·网络·网络协议·http
shawnyz13 分钟前
RHCSE--ansible2--剧本
linux·运维·服务器·ansible
小李独爱秋17 分钟前
计算机网络经典问题透视:为什么RTP协议同时具有运输层和应用层的特点?
运维·服务器·网络·网络协议·计算机网络
曹仙逸17 分钟前
Linux day02
linux·运维·服务器
色空大师22 分钟前
【Linux中yum、rpm、apt-get、wget的区别】
linux·运维·服务器
ccmedu26 分钟前
虚拟机启动卡死you might want to save “/run/initramfs/rdsosreport.txt
linux·运维·服务器
别多香了29 分钟前
k8s管理
docker·容器·kubernetes
林_学31 分钟前
Docker Desktop 全卸了,新项目上线从3天缩短到3分钟
运维·docker·容器
陈平安Java and C31 分钟前
Docker镜像原理
运维·docker·容器
爱吃山竹的大肚肚32 分钟前
Nginx 最核心和常用的命令
java·运维·服务器·前端·nginx