docker-compose.yml

version: "3"
services:
  php:
    image: joyqi/typecho:1.2.1-php8.0-fpm
    restart: always
    environment:
      TYPECHO_SITE_URL: ${TYPECHO_SITE_URL}
      TYPECHO_DB_HOST: mysql
      TYPECHO_DB_PORT: 3306
      TYPECHO_DB_USER: ${MYSQL_USER}
      TYPECHO_DB_PASSWORD: ${MYSQL_PASSWORD}
      TYPECHO_DB_DATABASE: ${MYSQL_DATABASE}
    volumes:
      - /etc/localtime:/etc/localtime
      - ${PWD}/data/php:/app
    depends_on:
      mysql: 
        condition: service_healthy
    networks:
      - typecho_network
  mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    ports:
      - ${GLOBAL_EXPOSE_MYSQL_PORT}:3306
    volumes:
      - /etc/localtime:/etc/localtime
      - ${PWD}/data/mysql:/var/lib/mysql
    networks:
      - typecho_network
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10
  nginx:
    image: nginx:1.25
    restart: always
    ports:
      - ${GLOBAL_EXPOSE_WEB_PORT}:80
      - ${GLOBAL_EXPOSE_WEB_SSL_PORT}:443
    volumes:
      - /etc/localtime:/etc/localtime
      - ${PWD}/data/php:/app
      - ${PWD}/data/nginx/html:/usr/share/nginx/html
      - ${PWD}/data/nginx/ssl:/etc/nginx/ssl
      - ${PWD}/data/nginx/logs:/var/log/nginx
      - ${PWD}/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - php
    networks:
      - typecho_network
 
networks:
  typecho_network: {}

.env

# Global
## http端口
GLOBAL_EXPOSE_WEB_PORT=80
## https端口
GLOBAL_EXPOSE_WEB_SSL_PORT=443
## mysql端口
GLOBAL_EXPOSE_MYSQL_PORT=3306
 
# Typecho
## 访问这个网址即可打开博客系统
TYPECHO_SITE_URL=http://192.168.56.201:8800
 
# MySQL
## 数据库root用户密码
MYSQL_ROOT_PASSWORD=***************
## 数据库名称
MYSQL_DATABASE=typecho
## 数据库账户
MYSQL_USER=typecho
## 数据库密码
MYSQL_PASSWORD=***************

:::