使用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 分钟前
GE 引擎的内存优化终局:静态生命周期分析指导下的内存分配与复用策略
linux·运维·服务器
凡人叶枫4 分钟前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
春日见17 分钟前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设
xuhe226 分钟前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr
Lsir10110_43 分钟前
【Linux】进程信号(下半)
linux·运维·服务器
skywalk81631 小时前
unbound dns解析出现问题,寻求解决之道
运维·服务器·dns·unbound
酉鬼女又兒1 小时前
零基础入门Linux指南:每天一个Linux命令_pwd
linux·运维·服务器
云飞云共享云桌面1 小时前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
skywalk81631 小时前
走近科学:unbound dns域名服务器自己本地解析出现问题,寻求解决之道
运维·服务器·dns·unbound
choke2331 小时前
Python 基础语法精讲:数据类型、运算符与输入输出
java·linux·服务器