安裝docker-compose? ?Install Docker Compose | Docker Documentation
首先創(chuàng)建環(huán)境目錄

data 目錄用來存放redis mysql數(shù)據(jù)
mysql nginx php redis 目錄用來構(gòu)建鏡像,存放Dokerfile等
www目錄為項(xiàng)目根目錄,index.php輸出phpinfo()
docker-compose.yml 為啟動(dòng)配置文件
.env 存儲(chǔ)全局變量
配置如下
nginx Dockerfile
FROM nginx
COPY default.conf? /etc/nginx/conf.d/
nginx default.conf?
server {
? ? listen? ? ? 80;
? ? listen? [::]:80;
? ? server_name? localhost;
? ? #access_log? /var/log/nginx/host.access.log? main;
? ? location / {
? ? ? ? root? /usr/share/nginx/html;
? ? ? ? index? index.html index.htm index.php;
? ? }
? ? #error_page? 404? ? ? ? ? ? ? /404.html;
? ? # redirect server error pages to the static page /50x.html
? ? #
? ? error_page? 500 502 503 504? /50x.html;
? ? location = /50x.html {
? ? ? ? root? /usr/share/nginx/html;
? ? }
? ? # proxy the PHP scripts to Apache listening on 127.0.0.1:80
? ? #
? ? #location ~ \.php$ {
? ? #? ? proxy_pass? http://127.0.0.1;
? ? #}
? ? # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
? ? #
? ? location ~ \.php$ {
? ? ? ? root? ? ? ? ? html;
? ? ? ? fastcgi_pass? php:9000;
? ? ? ? fastcgi_index? index.php;
? ? ? ? fastcgi_param? SCRIPT_FILENAME? /usr/share/nginx/html$fastcgi_script_name;
? ? ? ? include? ? ? ? fastcgi_params;
? ? }
? ? # deny access to .htaccess files, if Apache's document root
? ? # concurs with nginx's one
? ? #
? ? #location ~ /\.ht {
? ? #? ? deny? all;
? ? #}
}
php Dockerfile
FROM php:7.4-fpm
RUN docker-php-ext-install pdo_mysql \
&& curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/5.3.6.tar.gz \
&& tar xfz /tmp/redis.tar.gz \
&& rm -r /tmp/redis.tar.gz \
&& mkdir -p /usr/src/php/ext \
&& mv phpredis-5.3.6 /usr/src/php/ext/redis \
&& docker-php-ext-install redis
redis Dockerfile
FROM redis
mysql Dockerfile
FROM mysql
.env
# 設(shè)置時(shí)區(qū)
TZ=Asia/Shanghai
# 設(shè)置網(wǎng)絡(luò)模式
NETWORKS_DRIVER=bridge
# PATHS ##########################################
# 宿主機(jī)上代碼存放的目錄路徑
WWW_PATH_HOST=./www
# 宿主機(jī)上Mysql Reids數(shù)據(jù)存放的目錄路徑
DATA_PATH_HOST=./data
# Mysql 服務(wù)映射宿主機(jī)端口號(hào),可在宿主機(jī)127.0.0.1:3306訪問
MYSQL_PORT=3306
MYSQL_USERNAME=admin
MYSQL_PASSWORD=123456
MYSQL_ROOT_PASSWORD=123456
# Redis 服務(wù)映射宿主機(jī)端口號(hào),可在宿主機(jī)127.0.0.1:6379訪問
REDIS_PORT=6379
#Php-fpm 端口號(hào)
PHP_PORT=9000
docker-compose.yml
version: '3.0'
# 網(wǎng)絡(luò)配置
networks:
? backend:
? ? driver: ${NETWORKS_DRIVER}
# 服務(wù)容器配置
services:
? nginx:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 自定義容器名稱
? ? build:
? ? ? context: ./nginx? ? ? ? ? ? ? ? ? # 指定構(gòu)建使用的 Dockerfile 文件
? ? environment:? ? ? ? ? ? ? ? ? ? ? ? # 設(shè)置環(huán)境變量
? ? ? - TZ=${TZ}
? ? volumes:? ? ? ? ? ? ? ? ? ? ? ? ? ? # 設(shè)置掛載目錄
? ? ? - ${WWW_PATH_HOST}:/usr/share/nginx/html? # 引用 .env 配置中 WWW_PATH_HOST 變量,將宿主機(jī)上代碼存放的目錄掛載到容器中 /usr/share/nginx/html 目錄
? ? ports:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 設(shè)置端口映射
? ? ? - "80:80"
? ? ? - "8000:8000"
? ? ? - "8001:8001"
? ? ? - "8002:8002"
? ? ? - "8003:8003"
? ? networks:
? ? ? - backend
? ? restart: always? ? ? ? ? ? ? ? ? ? ? # 指定容器退出后的重啟策略為始終重啟
? php:
? ? build:
? ? ? context: ./php
? ? environment:
? ? ? - TZ=${TZ}
? ? volumes:
? ? ? - ${WWW_PATH_HOST}:/usr/share/nginx/html? ? ? # 引用 .env 配置中 WWW_PATH_HOST 變量,將宿主機(jī)上代碼存放的目錄掛載到容器中 /usr/share/nginx/html 目錄
? ? ports:
? ? ? - "${PHP_PORT}:9000"? ? ? ? ? ? ? ? ? ? ? ? ? # 設(shè)置容器9000端口映射指定宿主機(jī)端口
? ? networks:
? ? ? - backend
? ? restart: always
? mysql:
? ? build:
? ? ? context: ./mysql
? ? environment:
? ? ? - TZ=${TZ}
? ? ? - MYSQL_USER=${MYSQL_USERNAME}? ? ? ? ? ? ? ? ? # 設(shè)置 Mysql 用戶名稱
? ? ? - MYSQL_PASSWORD=${MYSQL_PASSWORD}? ? ? ? ? ? ? # 設(shè)置 Mysql 用戶密碼
? ? ? - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}? ? # 設(shè)置 Mysql root 用戶密碼
? ? volumes:
? ? ? - ${DATA_PATH_HOST}/mysql:/var/lib/mysql? ? ? ? # 引用 .env 配置中 DATA_PATH_HOST 變量,將宿主機(jī)上存放 Mysql 數(shù)據(jù)的目錄掛載到容器中 /var/lib/mysql 目錄
? ? ports:
? ? ? - "${MYSQL_PORT}:3306"? ? ? ? ? ? ? ? ? ? ? ? ? # 設(shè)置容器3306端口映射指定宿主機(jī)端口
? ? networks:
? ? ? - backend
? ? restart: always
? redis:
? ? build:
? ? ? context: ./redis
? ? environment:
? ? ? - TZ=${TZ}
? ? volumes:
? ? ? - ${DATA_PATH_HOST}/redis:/data? ? ? ? ? ? ? ? # 引用 .env 配置中 DATA_PATH_HOST 變量,將宿主機(jī)上存放 Redis 數(shù)據(jù)的目錄掛載到容器中 /data 目錄
? ? ports:
? ? ? - "${REDIS_PORT}:6379"? ? ? ? ? ? ? ? ? ? ? ? ? # 設(shè)置容器6379端口映射指定宿主機(jī)端口
? ? networks:
? ? ? - backend
? ? restart: always
后臺(tái)構(gòu)建并啟動(dòng)
docker-compose up -d
出現(xiàn)done代表安裝成功

打開瀏覽器測試


