当前位置: 首页 > news >正文

docker 搭建alpine下nginx1.26/mysql8.0/php7.4环境

docker 搭建alpine下nginx1.26/mysql8.0/php7.4环境

docker-compose.yml

services:
  mysql-8.0:
    container_name: mysql-8.0
    image: mysql:8.0
    restart: 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:ro
    environment:
      MYSQL_ROOT_PASSWORD: zengshunsql80
  php-7.4:
    container_name: php-7.4
    image: php:7.4-fpm-alpine
    build: ./dockerfiles/php
    restart: always
    volumes:
      - ./etc/php:/usr/local/etc/php
      - ./var/www:/var/www/html
      - /etcw/localtime:/etc/localtime:ro
  nginx-1.26:
    container_name: nginx-1.26
    image: nginx:1.26.2-alpine
    restart: always
    ports:
      - "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

部署文件夹目录

部署目录

更多

  1. php记得修改php.ini配置文件时区:date.timezone = ‘Asia/Shanghai’。
  2. mysql记得修改mysql.cnf配置文件时区:default-time-zone = ‘+08:00’。
  3. docker-compose.yml文件:除了nginx端口映射,其余容器的端口生产模式最好是不映射到外部,容器间通信使用容器名就可以;links参数已弃用,不需要设置,docker-compose.yml中不指定网络默认在同一网络中

部署文件合集

百度网盘

相关文章:

  • 【Pandas】pandas Series shift
  • 操作系统知识点28
  • Tomato靶机攻略
  • Redis超高并发分key实现
  • HDR图像处理:色调映射和色域映射参数
  • 记一次OOM异常问题排查
  • 感觉自己邮电部诗人
  • electron + vue3 + vite 渲染进程与渲染进程之间的消息端口通信
  • 用nodejs加electron加roboticjs判断鼠标点击时是否在浏览器内部
  • 1.VisionPro的安装
  • 植物学(botany)这个单词怎么记?牛吃草,草是一种植物
  • BLDC直流无刷电机转速电流双闭环调速MATLAB仿真
  • PyTorch分布式训练
  • 基于 Selenium 的软件测试方法研究
  • Java 大视界 -- Java 大数据中的数据可视化大屏设计与开发实战(127)
  • Oracle VirtualBox安装CentOS 7
  • STM32使用EXTI触发进行软件消抖(更新中)
  • CDefView::_GetPIDL函数分析之ListView_GetItem函数的参数item的item.mask 为LVIF_PARAM
  • Linux_17进程控制
  • 某快餐店用户市场数据挖掘与可视化
  • 本周看啥|《歌手》今晚全开麦直播,谁能斩获第一名?
  • “三个集中”之后:图说浦东新区28次撤乡并镇
  • 巴菲特谈卸任CEO:开始偶尔失去平衡,但仍然保持敏锐的头脑,仍打算继续工作
  • 北京13日冰雹过后,已受理各险种报案近3万件
  • 央媒评网红质疑胖东来玉石定价暴利:对碰瓷式维权不能姑息
  • 演员黄晓明、金世佳进入上海戏剧学院2025年博士研究生复试名单