docker-compose编排fastadmin项目

项目启动同时兼容dcoker环境为MACm1和liunx环境无缝切换

文件目录说明

  • bin 存放代码 以及 构建dockerfile
  • config 启动配置文件
  • data 自动生成的可持久化数据,dev 到 生产 可不必保留,生产环境下一定不要删除会丢失数据库数据
  • logs 自动生成的日志数据,dev 到 生产 可不必保留
  • .env 配置一些必要的参数,如对外端口、映射路径、容器名称等等

dev 模式

  • 保留文件夹 bin config
  • 保留文件 .env docker-compose-dev.yml
  • 更新代码位置 bin/epp_php
# 构建启动项目
docker-compose -f docker-compose-dev.yml up --build

# 测试正常可以推送镜像, 名字和标签随意定义,与docker-compose-dev.yaml中保持一致即可
docker push tangyinsong/epp_php:latest
docker push tangyinsong/nginx:latest

线上 模式

  • 保留文件夹 config
  • 保留文件 .env docker-compose.yml
# 启动项目,会自动拉取所需的镜像并加载配置文件启动
docker-compose -f docker-compose.yml up -d
- bin
  * epp_php为fastadmin项目
  * nginx
  	+ Dockerfile
  * php
  	+ Dockerfile
  

配置文件目录

- config
  * mysql
  	+mysql.cnf
  * nginx
  	+conf.d    #网站配置目录
    +nginx.conf
  * php
   	+php.ini
   	+php-fpm.conf
   	+www.conf
  * redis
  	+redis.conf
  * logs
   	nginx
   	php
   	redis
 .env
 docker-compose.yml

.env文件配置文内容

#public
NETWORK=php_network
TZ=Asia/Shanghai

#php
PHP_CONTAINER_NAME=php
PHP_PORT=9090
PHP_FPM_CONF=./config/php/php-fpm.conf
PHP_INI=./config/php/php.ini
PHP_LOG=./logs/php

#nginx
NGINX_CONTAINER_NAME=nginx
NGINX_VERSION=1.25.2
NGINX_HTTP_PORT=9080
NGINX_HTTPS_PORT=9443
NGINX_CONFD=./config/nginx/conf.d
NGINX_CONF=./config/nginx/nginx.conf
NGINX_LOG=./logs/nginx

#mysql
#MYSQL_CONTAINER_NAME=mysql
#MYSQL_VERSION=5.6
#MYSQL_PORT=9036
#MYSQL_USER=docker
#MYSQL_PASSWORD=123456
#MYSQL_DATABASE=docker
#MYSQL_ROOT_PASSWORD=123456
#MYSQL_CONF=./config/mysql
#MYSQL_DATA=./data/mysql

#redis
REDIS_CONTAINER_NAME=redis
REDIS_VERSION=7.0.0-alpine
REDIS_PORT=9379
REDIS_CONF=./config/redis/redis.conf
REDIS_DATA=./data/redis
REDIS_LOG=./logs/redis

编写docker-compose:

version: "3"
services:
  php:
    image: tangyinsong/epp_php:latest
    container_name: ${PHP_CONTAINER_NAME}
    restart: 'always'
    ports:
      - "${PHP_PORT}:9000"
    volumes:
      - ${PHP_FPM_CONF}:/usr/local/etc/php-fpm.d/www.conf:rw
      - ${PHP_INI}:/usr/local/etc/php/php.ini:ro
      - ${PHP_LOG}:/var/log/php

  nginx:
    image: tangyinsong/nginx:latest
    container_name: ${NGINX_CONTAINER_NAME}
    ports:
      - "${NGINX_HTTP_PORT}:80"
      - "${NGINX_HTTPS_PORT}:443"
    environment:
      TZ: "$TZ"
    restart: 'always'
    volumes:
      - ${NGINX_CONFD}:/etc/nginx/conf.d/:rw
      - ${NGINX_CONF}:/etc/nginx/nginx.conf:ro
      - ${NGINX_LOG}:/var/log/nginx/:rw

  #  mysql:
  #    image: mysql:${MYSQL_VERSION}
  #    container_name: ${MYSQL_CONTAINER_NAME}
  #    command: --default-authentication-plugin=mysql_native_password
  #    ports:
  #      - "${MYSQL_PORT}:3306"
  #    volumes:
  #      - ${MYSQL_CONF}:/etc/mysql/conf.d:rw
  #      - ${MYSQL_DATA}:/var/lib/mysql/:rw  #include mysql log
  #    restart: 'always'
  #    environment:
  #      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
  #      TZ: "$TZ"

  redis:
    image: redis:${REDIS_VERSION}
    container_name: ${REDIS_CONTAINER_NAME}
    ports:
      - "${REDIS_PORT}:6379"
    volumes:
      - ${REDIS_CONF}:/etc/redis.conf:ro
      - ${REDIS_DATA}:/data:rw
      - ${REDIS_LOG}:/var/log/redis/:rw
    restart: 'always'
    entrypoint: ["redis-server", "/etc/redis.conf"]
    environment:
      TZ: "$TZ"

编写dockerfile

FROM --platform=linux/amd64 php:7.3.33-fpm-bullseye

ENV DEBIAN_FRONTEND=noninteractive

# 设置时区,亚洲上海时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' > /etc/timezone

RUN sed -i "s/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g" /etc/apt/sources.list

WORKDIR /var/wwwcd

# PHPIZE_DEPS包含gcc g++等编译辅助类库,完成后删除; pecl安装扩展。
RUN apt-get update \
    && apt-get install -y git wget curl gcc g++ zip libxml2-dev \
        libpng-dev libcurl4-gnutls-dev libbz2-dev libssl-dev libmcrypt-dev \
        libfreetype-dev libjpeg-dev zlib1g-dev libzip-dev libc-dev \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*


RUN pecl channel-update pecl.php.net \
    && pecl update-channels \
    && pecl install redis zip mcrypt \
    && docker-php-ext-enable redis zip mcrypt

RUN docker-php-ext-configure gd \
    --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ \
    && docker-php-ext-install -j10 gd pdo_mysql mysqli fileinfo \
        opcache bcmath json curl \
    && docker-php-ext-install -j10 \
        mbstring sockets bz2 fileinfo xml \
        simplexml ctype intl

RUN curl -sS https://getcomposer.org/installer | php \
    && mv composer.phar /usr/local/bin/composer \
    && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer

COPY epp_php/composer.json .

RUN composer install \
    && rm -rf epp_php/composer.json

COPY epp_php epp_php

RUN chown -R www-data:www-data /var/www/epp_php
    # && chmod -R 777 /var/www/epp

WORKDIR /var/www/epp_php/public
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值