使用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
相关推荐
<e^πi+1=0>3 分钟前
Docker部署Lighthouse CI Server总结
ci/cd·docker·容器
2501_938810119 分钟前
动态IP与短效IP的关系
服务器·网络协议·tcp/ip
TAEHENGV13 分钟前
提醒历史模块 Cordova 与 OpenHarmony 混合开发实战
运维·服务器
建群新人小猿17 分钟前
陀螺匠企业助手 运行环境
java·大数据·人工智能·docker·php
虾..19 分钟前
Linux 进程间通信---命名管道
linux·运维·服务器
还是大剑师兰特19 分钟前
PNG图像文件结构
服务器·大剑师·png结构
A132470531241 分钟前
进程管理入门:查看和控制Linux进程
linux·运维·服务器·网络·chrome·github
gaize12131 小时前
网络服务器配置与管理深度分享
服务器
木二_1 小时前
附055.Kubernetes部署Zabbix实战
云原生·容器·kubernetes·zabbix·监控
奥尔特星云大使1 小时前
使用 Docker 运行 SQL Server 2019
运维·docker·容器·sql server