docker-compose來快速建置wordpress

以docker-compose.yml來建置wordpress服務於8031 port,並且加上 phpMyAdmin,讓你用瀏覽器管理同一個 MySQL。WordPress 仍然以 8031 對外,phpMyAdmin 另外用 8032

version: '3.9'

services:
  wordpress:
    image: wordpress:latest
    container_name: wordpress_site
    ports:
      - "8031:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: wppassword
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress_data:/var/www/html
    depends_on:
      - db
    restart: always

  db:
    image: mysql:5.7
    container_name: wordpress_db
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: wppassword
    volumes:
      - db_data:/var/lib/mysql
    restart: always

  phpmyadmin:
    image: phpmyadmin:latest
    container_name: wp_phpmyadmin
    depends_on:
      - db
    environment:
      PMA_HOST: db
      PMA_PORT: 3306
      PMA_USER: root
      PMA_PASSWORD: rootpassword
      UPLOAD_LIMIT: 512M
    ports:
      - "8032:80"
    restart: always

volumes:
  wordpress_data:
  db_data:

使用方式

  1. 將上面內容存成 docker-compose.yml
  2. 啟動: docker-compose up -d
  3. 開啟:
    • WordPress:http://localhost:8031
    • phpMyAdmin:http://localhost:8032(使用 root / rootpasswordwpuser / wppassword 登入)

建議:上線前把 rootpassword / wppassword 換成強密碼;若要改用 MariaDB 也可以把 db 的 image 換成 mariadb:10.11,其餘設定相同。

Ubuntu 24.04 上自動安裝 Docker CE 與 docker-compose

可以用以下 Bash 腳本,在 Ubuntu 24.04 上自動安裝 Docker CEdocker-compose(最新版 Compose Plugin)。
這個腳本會自動處理官方 Docker GPG Key、套件庫設定,以及安裝與啟動服務。

#!/bin/bash
set -e

echo "=== 更新套件列表 ==="
sudo apt-get update -y
sudo apt-get upgrade -y

echo "=== 安裝必要套件 ==="
sudo apt-get install -y ca-certificates curl gnupg lsb-release

echo "=== 新增 Docker 官方 GPG Key ==="
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
    sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "=== 新增 Docker 套件來源 ==="
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

echo "=== 更新套件列表 (Docker) ==="
sudo apt-get update -y

echo "=== 安裝 Docker CE 與 Compose Plugin ==="
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

echo "=== 啟動並設定 Docker 開機自動啟動 ==="
sudo systemctl enable docker
sudo systemctl start docker

echo "=== 將目前使用者加入 docker 群組 (免 sudo) ==="
sudo usermod -aG docker $USER

echo "=== 安裝完成 ==="
docker --version
docker compose version

echo "⚠️ 請重新登入帳號以套用群組變更"

使用方式

  1. 將上述內容儲存為檔案,例如 install_docker.sh
  2. 執行: chmod +x install_docker.sh ./install_docker.sh
  3. 安裝完成後,登出並重新登入,就可以直接使用 dockerdocker compose 指令。

[docker][bitnami/redmine]版本升級5.0.2升級至6.0.2

由於原本安裝的dockr-compose.yml 是在/root 下啟動的, 因此也要回到/root下執行 #docker-compose down

以下為原

version: '3.1'
services:
  mariadb:
    image: mariadb:10.9.2
    container_name: db
    ports:
      - '3306:3306'
    volumes:
      - 'mariadb_data:/var/lib/mysql'
    environment:
      - MARIADB_USER=test_redmine
      - MARIADB_PASSWORD=test_password
      - MARIADB_DATABASE=bitnami_redmine
      - MARIADB_ROOT_PASSWORD= '638d5c15-6d94-4115-b9e5-961a9eb5c972'
  redmine:
    image: docker.io/bitnami/redmine:5.0.2
    container_name: redmine
    ports:
      - '80:3000'
    volumes:
      - 'redmine_data:/bitnami/redmine'
    depends_on:
      - mariadb
    environment:
      - REDMINE_DATABASE_HOST=mariadb
      - REDMINE_DATABASE_PORT_NUMBER=3306
      - REDMINE_DATABASE_USER=test_redmine
      - REDMINE_DATABASE_PASSWORD=test_password
      - REDMINE_DATABASE_NAME=bitnami_redmine
volumes:
  mariadb_data:
    driver: local
  redmine_data:
    driver: local

之後修改/root/docker-compose.yml 將指定版本拿掉, 讓它下載最新的images來啟動

如下列所示

version: '3.1'
services:
  mariadb:
    image: mariadb
    container_name: db
    ports:
      - '3306:3306'
    volumes:
      - 'mariadb_data:/var/lib/mysql'
    environment:
      - MARIADB_USER=test_redmine
      - MARIADB_PASSWORD=test_password
      - MARIADB_DATABASE=bitnami_redmine
      - MARIADB_ROOT_PASSWORD= '638d5c15-6d94-4115-b9e5-961a9eb5c972'
  redmine:
    image: docker.io/bitnami/redmine
    container_name: redmine
    ports:
      - '80:3000'
    volumes:
      - 'redmine_data:/bitnami/redmine'
    depends_on:
      - mariadb
    environment:
      - REDMINE_DATABASE_HOST=mariadb
      - REDMINE_DATABASE_PORT_NUMBER=3306
      - REDMINE_DATABASE_USER=test_redmine
      - REDMINE_DATABASE_PASSWORD=test_password
      - REDMINE_DATABASE_NAME=bitnami_redmine
volumes:
  mariadb_data:
    driver: local
  redmine_data:
    driver: local

再於/root 下將其啟動 #docker-compose up -d

其依照當下最近的版本來下載安裝並啟動, 而當下的最新版本即6.0.2 , 因此即升級至 6.0.2 的版本

【問題排除】遇到有人使用mac的瀏覽器(Safari)無法預覽PDF 文件, 但是在 chrome 可以正常

使用者環境:iOS 11.3.1;Safari 14.1

問題原因:PMS 於附加檔案的 HTTP Header 增加的新式參數,導致 Safari 舊版無法直接預覽檔案。

解決方式參考來源:

https://github.com/bitnami/vms/issues/1439

解決方法:

將 PMS (Redmine) Docker Volumn 中的

/opt/bitnami/redmine/app/controllers/attachments_controller.rb

接近檔案結尾處:

headers[‘content-security-policy’] = “default-src ‘none’; style-src ‘unsafe-inline’; sandbox”

將 sandbox 移除,即可於舊版 Safari 正常預覽 PDF。

Docker 指令紀錄:

#先檢查檔案是否存在,以及確切的檔案路徑# 檢視 Docker Volumn (目前 Volumn Name 為 pms)docker ps
# 以 BASH 進入 Docker Volumndocker exec -it pms /bin/bash
# 進入 Volumn 確認檔案位置後,離開 Dockerexit
# 將 attachments_controller.rb 檔案 copy 至 Docker Volumn 外docker cp pms:/opt/bitnami/redmine/app/controllers/attachments_controller.rb ~
# 修改檔案 attachments_controller.rbnano attachments_controller.rb
# 檔案修正完成並儲存後,將檔案複製回 Docker Volumndocker cp attachments_controller.rb pms:/opt/bitnami/redmine/app/controllers/
# 複製完成後,會即時生效# 除非重新掛載 Docker Image,該修改應當會一直存在不會消失

[ubuntu]經由docker安裝wordpress

在一台ubuntu主機上(此測試是在20.04版本上),使用編輯器新增一個檔案名為idwp.sh

#vi idwp.sh

按i進入編輯狀態,然後將底下的內容copy後貼到檔案中

#!/bin/bash
sudo apt install -y curl
sudo curl -sSL http://www.twlais.com/study/docker/ui-dc-wp | bash

按ESC後再按:wq存檔離開, 再以管理者執行它

#sudo bash idwp.sh

即可自動安裝完成, 再以http://[你的ubuntu主機IP]:8031 即可看到安裝完成的設定畫面