docker 搭建alpine下nginx1.26/mysql8.0/php7.4環境
docker-compose.yml
services:mysql-8.0:container_name: mysql-8.0image: mysql:8.0restart: always#ports:#- "3306:3306"volumes:- ./etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro- ./var/log/mysql:/var/log/mysql:ro- ./var/lib/mysql:/var/lib/mysql- /etc/localtime:/etc/localtime:roenvironment:MYSQL_ROOT_PASSWORD: zengshunsql80php-7.4:container_name: php-7.4image: php:7.4-fpm-alpinebuild: ./dockerfiles/phprestart: alwaysvolumes:- ./etc/php:/usr/local/etc/php- ./var/www:/var/www/html- /etcw/localtime:/etc/localtime:ronginx-1.26:container_name: nginx-1.26image: nginx:1.26.2-alpinerestart: alwaysports:- "80:80"volumes:- ./etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro- ./etc/nginx/conf.d:/etc/nginx/conf.d:ro- ./etc/nginx/certs:/etc/nginx/certs- ./etc/nginx/.htpasswd:/etc/nginx/.htpasswd- ./var/log/nginx:/var/log/nginx- ./var/www:/usr/share/nginx/html- /etc/localtime:/etc/localtime:ro
- 注意: 如果是 arm架構下搭建環境,則需要在拉取的鏡像前加上arm64v8/,拉取arm64v8版本的鏡像,同理Dockerfile源鏡像也需要修改。
php7.4 Dockerfile
FROM php:7.4-fpm-alpine
#安裝php7.4的拓展
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
&& apk update \
&& apk add build-base autoconf bzip2-dev libxslt-dev freetype-dev libjpeg-turbo-dev libpng-dev zlib-dev libzip-dev icu-dev \
&& docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \
&& docker-php-ext-install gd \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install opcache \
&& docker-php-ext-install bcmath \
&& docker-php-ext-install mysqli \
&& docker-php-ext-install zip \
&& docker-php-ext-configure intl && docker-php-ext-install intl \
#&& pecl install redis-5.3.1 \
#&& docker-php-ext-enable redis \
&& apk del build-base
運行項目
# 構建并保持后臺運行
sudo docker-compose up -d --build
# 不構建保持后臺運行
sudo docker-compose up -d
數據庫配置
# 復制sql文件到容器
sudo docker cp projectname.sql mysql-8.0:/
# 進行數據庫容器
sudo docker exec -it mysql-8.0 /bin/bash
# 連接數據庫
mysql -u root -p
# 創建數據庫
create database projectname default character set utf8 collate utf8_general_ci;
# 選擇數據庫
use projectname;
# 使用sql文件
source projectname.sql;
# 創建數據庫使用用戶
create user 'projectname'@'%' identified by 'zs@projectname';
# 分配用戶數據庫權限
grant all privileges on projectname.* to 'projectname'@'%';
# 刷新數據庫
flush privileges;
# 退出鏈接
exit;
# 測試用戶鏈接數據庫
mysql -u projectname -p zs@projectname
# 導出容器中指定數據庫
sudo docker exec mysql-8.0 mysqldump -uroot -pzengshunsql80 projectname > ~/projectname.sql
部署文件夾目錄
更多
- php記得修改php.ini配置文件時區:date.timezone = ‘Asia/Shanghai’。
- mysql記得修改mysql.cnf配置文件時區:default-time-zone = ‘+08:00’。
- docker-compose.yml文件:除了nginx端口映射,其余容器的端口生產模式最好是不映射到外部,容器間通信使用容器名就可以;links參數已棄用,不需要設置,docker-compose.yml中不指定網絡默認在同一網絡中
部署文件合集
百度網盤