1. 程式人生 > 其它 >Docker compose 搭建php本地開發環境(php+mysql+nginx)

Docker compose 搭建php本地開發環境(php+mysql+nginx)

技術標籤:技術dockerphp

PHP負載+mysql主備+nginx

本地開發如果不用負載,就在下面的docker-compose.yml裡面註釋掉myphp2的配置就好了,mysql不主備也一樣,註釋掉mysql-slave就好了。

前期準備

1、拉取映象到本地
在這裡插入圖片描述我使用的映象裡面mysql和nginx都是直接從官方拉取下來的,php:7.1.9-fpm-new 是我自己用Dockerfile構建的,裡面安裝上一下常用擴充套件之類的。
2、安裝 docker-compose

以下內容需要儲存到docker-compose.yml檔案裡面
version: "3"
services:
  #nginx 服務
  webserver:
    image: nginx
    volumes:
      - "/Users/linzehui/www:/usr/share/nginx/html"
      - "/Users/linzehui/work/docker_project/nginx/conf/conf.d:/etc/nginx/conf.d"
    depends_on: #啟動依賴
      - myphp1 #先啟動myphp1
      - myphp2 #再先啟動myphp2,最後再啟動 webserver
    networks: 
      - web-net #自己先建立的網路,容器直接可以互通
    ports:
      - "80:80"
      - "443:443"
    container_name: webserver #容器名稱

  #php服務1
  myphp1:
    image: php:7.1.9-fpm-new
    volumes:
      - "/Users/linzehui/www:/var/www/html"
    networks: 
      - web-net
    command: php-fpm #啟動容器後執行的命令
    container_name: myphp1

  #php服務2(沒有啟用)
  myphp2:
    image: php:7.1.9-fpm-new
    volumes:
      - "/Users/linzehui/www:/var/www/html"
    networks: 
      - web-net
    command: php-fpm
    container_name: myphp2

  #Mysql-Master
  mysql-master:
    image: mysql:5.7
    ports:
      - "3339:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_ROOT_HOST: "%"
    volumes:
      - "/Users/linzehui/work/docker_project/mysql/master/data:/var/lib/mysql"       # 掛載資料目錄
      - "/Users/linzehui/work/docker_project/mysql/master/config:/etc/mysql/conf.d"  # 掛載配置檔案目錄
    networks: 
      - web-net
    container_name: mysql-master

  #Mysql-Slave
  mysql-slave:
    image: mysql:5.7
    ports:
      - "3340:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_ROOT_HOST: "%"
    volumes:
      - "/Users/linzehui/work/docker_project/mysql/slave/data:/var/lib/mysql"       # 掛載資料目錄
      - "/Users/linzehui/work/docker_project/mysql/slave/config:/etc/mysql/conf.d"  # 掛載配置檔案目錄
    networks: 
      - web-net
    container_name: mysql-slave

networks:
  web-net:

然後自己再配置好nginx相關內容,再從docker-compose.yml所在的目錄啟動容器:

docker-compose up -d

在這裡插入圖片描述然後就可以正常訪問了~~