首先你可以準(zhǔn)備這個三個服務(wù),也可以在docker compose 文件中 直接拉去指定鏡像,這里演示的是鏡像服務(wù)已經(jīng)在本地安裝好了,提供如下:
PHP
# 設(shè)置基礎(chǔ)鏡像
FROM php:8.2-fpm
# install dependencies
RUN apt-get update && apt-get install -y \
vim \
libzip-dev \
libpng-dev \
libjpeg-dev \
iputils-ping \
libmcrypt-dev \
libmcrypt4 \
libmhash-dev \
libmhash2 \
libxml2 \
libxml2-dev \
libbz2-1.0 \
libbz2-dev \
libfreetype6-dev \
&& pecl install redis && docker-php-ext-enable redis \
&& rm -rf /var/lib/apt/lists/*
# install more php extensions
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install zip pdo_mysql gd
# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# 安裝 OPcache
RUN docker-php-ext-install opcache
日常用的擴展都有了應(yīng)該,
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install zip pdo_mysql gd
這兩個你也可以移到上面的RUN一同安裝
Nginx
# 設(shè)置基礎(chǔ)鏡像
FROM nginx
# 安裝一些必要的工具和額外軟件包
RUN apt-get update && apt-get install -y \
vim \
curl \
&& rm -rf /var/lib/apt/lists/*
Mysql
直接從官方鏡像資源中拉去
docker pull mysql
這樣你將產(chǎn)生三個鏡像
下面開始利用這三個鏡像去構(gòu)建你的項目容器
1.找到你的項目地址,比如我的:
/home/wanghaiyang/project/customeFrame/fr
2.準(zhǔn)備一個文件夾,用來放你的compse.yml文件(默認情況下,這一組服務(wù)的名字就是你這個文件夾名字),
3.準(zhǔn)備一個compose.yml文件:內(nèi)容如下? ?
version: '3'
services:
# PHP 服務(wù)
php_server:
image: php8.2
# 使用的 PHP 鏡像
volumes:
- /home/wanghaiyang/project/customeFrame/fr:/usr/share/nginx/html
ports:
- "9000:9000"
# 其他 PHP 相關(guān)配置...
container_name: "compose-php"
networks:
- custome-network
# Nginx 服務(wù)
api_server:
image: nginx
# 使用的 Nginx 鏡像
volumes:
- /home/wanghaiyang/project/customeFrame/fr:/usr/share/nginx/html
- ./custome_frame.conf:/etc/nginx/conf.d/default.conf
# 映射本地文件系統(tǒng)中的目錄到容器中,確保 Nginx 使用自定義配置
ports:
- "8080:80"
# 將主機的 8080 端口映射到容器的 8080 端口
depends_on:
- php_server
- db_server
# 定義依賴關(guān)系,確保 Nginx 在 PHP 和 MySQL 之后啟動
container_name: "compose-api"
networks:
- custome-network
# MySQL 服務(wù)
db_server:
image: mysql
# 使用的 MySQL 鏡像
# 其他 MySQL 相關(guān)配置...
environment:
MYSQL_ROOT_PASSWORD: wqzbxh@2018$$
# 設(shè)置 MySQL root 用戶密碼
ports:
- 3700:3306
# 將主機的 3700 端口映射到容器的 3306 端口
volumes:
- ./db_data:/var/lib/mysql
container_name: "compose-db"
networks:
- custome-network
# Adminer 服務(wù)(用于管理 MySQL 數(shù)據(jù)庫)
adminer:
image: adminer
# 使用的 Adminer 鏡像
restart: always
ports:
- 3701:8080
# 將主機的 3701 端口映射到容器的 8080 端口
container_name: "compose-adminer"
networks:
custome-network:
? ??
再給一個custome_frame.conf文件,
server {
listen 80;
listen [::]:80;
server_name localhost;
root /usr/share/nginx/html;
# 配置根目錄和默認文件
location / {
index index.php index.html index.htm;
}
# 如果文件不存在,重寫URL到index.php
if (!-e $request_filename){
rewrite ^(.*)$ /index.php last;
break;
}
# 將 PHP 腳本通過 FastCGI 傳遞到監(jiān)聽在 127.0.0.1:9000 上的服務(wù)器
location ~ \.php$ {
fastcgi_pass php_server:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}
# 禁止訪問 .htaccess 文件,如果 Apache 的文檔根與 nginx 的文檔根相符
#
#location ~ /\.ht {
# deny all;
#}
}
這個時候已經(jīng)全部結(jié)束了
adminer 這個東西是 管理數(shù)據(jù)庫的,前身是phpAdmin的影子,它長這個樣子
然后在你的當(dāng)前目錄直接就
docker compose up -d
然后就成功了,我們這個時候訪問一下測試一下
OK沒問題,說明Nginx 已經(jīng)和 PHP 正常通訊了,我們再來看一下數(shù)據(jù)庫請求;
證明也是沒問題的
文章來源:http://www.zghlxwxcb.cn/news/detail-790281.html
上面的基本上及參數(shù)一換就能用文章來源地址http://www.zghlxwxcb.cn/news/detail-790281.html
到了這里,關(guān)于傻瓜式教學(xué)Docker 使用docker compose部署 php nginx mysql的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!