docker-compose 簡單搭建php環(huán)境(nginx+mysql+redis)

安裝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代表安裝成功


打開瀏覽器測試

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容