docker-composer安装Nginx、PHP、MySQL、Redis、PHPmyadmin、kodbox

docker-compose.yml文件如下:

version: '3.8'
services:
  nginx:
    image: nginx:latest
    user: "1000:1000"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./www:/var/www/html
    depends_on:
      - php
    networks:
      - lnmp-network

  php:
    build: ./php
    image: php:8.3-fpm-alpine
    volumes:
      - ./www:/var/www/html
      - ./php/php.ini:/usr/local/etc/php/conf.d/custom.ini
    environment:
      PHP_OPCACHE_ENABLE: "1"
    networks:
      - lnmp-network

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root_password # 自己替换
      MYSQL_DATABASE: kodbox
      MYSQL_USER: user                   # 自己替换
      MYSQL_PASSWORD: user_password      # 自己替换
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf:/etc/mysql/conf.d
    ports:
      - "3306:3306"
    networks:
      - lnmp-network

  redis:
    image: redis:latest
    ports:
      - "6379:6379"
    networks:
      - lnmp-network

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8080:80"
    environment:
      PMA_HOST: mysql
      MYSQL_ROOT_PASSWORD: root_password
    depends_on:
      - mysql
    networks:
      - lnmp-network

  kodbox:
    image: kodcloud/kodbox:latest
    ports:
      - "9000:80"
    volumes:
      - ./kodbox:/var/kodbox
    environment:
      MYSQL_HOST: mysql              # 与 MySQL 的服务名要一致
      MYSQL_USER: user               # 自己替换
      MYSQL_PASSWORD: user_password  # 自己替换
      MYSQL_DATABASE:kodbox
    depends_on:
      - mysql
      - redis
    networks:
      - lnmp-network

networks:
  lnmp-network:
    driver: bridge

注意:上面数据库只能配置一个,其他数据库在用 root 用户登录 phpMyAdmin 的时候创建

批量创建目录:

mkdir -p ~/lnmp/{www,php,mysql/{data,conf},nginx/conf.d,kodbox}
  • nginx/conf.d:nginx站点配置
  • mysql/data:MySQL数据持久化
  • mysql/conf:MySQL自定义配置(如字符集)
  • www:项目代码目录

创建 php/Dockerfile 文件(安装有composer):

FROM php:8.3-fpm
USER root
RUN rm -rf /etc/apt/sources.list /etc/apt/sources.list.d/* && \
    touch /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/debian/ bookworm main non-free contrib" > /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/debian-security/ bookworm-security main contrib non-free" >> /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free" >> /etc/apt/sources.list && \
    apt-get update && apt-get install -y \
    git \
    unzip \
    libpng-dev \
    libonig-dev \ 
    libxml2-dev \
    && docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
    
# 安装 Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    WORKDIR /var/www/html && \
    chown -R www-data:www-data /var/www/html

RUN if [ ! -f composer.json ]; then composer init --no-interaction --name="temp/project" || echo "{}" > composer.json; fi
    COPY . .
RUN composer install
USER www-data

laravel项目的创建:

进入 ~/lnmp 目录使用 docker-compose 创建 laravel 项目

cd ~/lnmp
rm -rf www # 如果要创建 laravel 项目,要先删除 www 目录
docker-compose run --rm composer create-project --prefer-dist laravel/laravel www

laravel的数据库迁移命令:

docker-compose exec php php artisan migrate #第一个 php 是服务名

# 参数说明
# --force:强制在生产环境运行迁移(可选)。
# --seed:同时填充种子数据(可选)。

数据库迁移命令可以在容器启动时迁移(适用于初始化部署)

php:
    build: ./php
    image: php:8.3-fpm-alpine
    command: sh -c "php artisan migrate --force && php-fpm"

# 其他配置保持不变

创建 php/php.ini 文件:

upload_max_filesize = 64M
opcache.enable=1
date.timezone = Asia/Shanghai 

创建 nginx/conf.d/app.conf 文件:

server {
  listen 80;
  server_name www.example.com;
  root  /var/www/html/public;
  index index.php index.html index.htm;

  location / {
      try_files $uri $uri//index.php?$query_string;
  }
  
  location ~ \.php$ {
      fastcgi_pass php:9000;
      fastcgi_index index.php; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      include fastcgi_params;
  }
}

运行命令批量创建容器:

docker-compose build --no-cache php && docker-compose up -d
或者
docker-compose up -d --build

运行命令批量停止容器:

docker-compose down  #不删除卷
或者
docker-compose down -v #删除卷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰雪青松

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值