Docker Compose

Docker 教程 · 第 7 章 · 5 次浏览

用 Docker 部署一个 PHP + MySQL 网站:Nginx 提供静态和反代、PHP-FPM 执行代码、MySQL 存数据、Redis 做缓存。一条 compose 全搞定。

结构

代码挂载给 php 和 nginx;数据库数据卷持久化;环境变量管密码。这个方案在云服务器上验证一次,以后随便换机器。

代码示例

# docker-compose.yml(PHP 项目)
services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./site:/var/www/html
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

  php:
    image: php:8.2-fpm
    volumes:
      - ./site:/var/www/html
    # 装扩展示例:
    # build:
    #   context: .
    #   dockerfile: Dockerfile

  mysql:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
      MYSQL_DATABASE: codecourse
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"

  redis:
    image: redis:alpine
    ports:
      - "6379:6379"

volumes:
  mysql_data:

# docker compose up -d 后访问 http://服务器IP