docker 配置 nginx外部转发访问 php+mysql+redis+vue+node

外部nginx 配置

server {
        listen 80;
        listen 443 ssl;
        server_name web.docker.com;
        location / {
	proxy_pass http://192.168.56.101:8000;
	proxy_set_header Host $host;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header X-Forwarded-Proto $scheme;
	proxy_http_version 1.1;
	proxy_set_header Connection "";
	proxy_buffering off;
	proxy_read_timeout 3600s;
	proxy_send_timeout 3600s;
       }
}

server {
        listen 80;
        #listen 8001;
        listen 443 ssl;
        server_name vue.docker.com;
        location / {
	proxy_pass http://192.168.56.101:7000;
	proxy_set_header Host $host;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header X-Forwarded-Proto $scheme;
	proxy_http_version 1.1;
	proxy_set_header Connection "";
	proxy_buffering off;
	proxy_read_timeout 3600s;
	proxy_send_timeout 3600s;
       }
}

容器内部nginx


server
{
        listen          80;
        server_name     vue.docker.com;
        index           index.html index.php index.htm;
        root            /var/www/html/dist/;

      try_files $uri $uri/ /index.html;
}


server {
    listen 443 ssl;
    server_name     vue.docker.com;
    index           index.html index.php index.htm;
     root            /var/www/html/dist/;
     ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
     ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
     #ssl_dhparam /etc/ssl/certs/dhparam.pem;
     ssl_session_timeout  5m;
     ssl_prefer_server_ciphers on;
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDH:AES:HIGH:!aNULL:!MD5:!ADH:!DH;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

     try_files $uri $uri/ /index.html;
}

访问:https://web.docker.com | https://vue.docker.com
执行:sh docker.sh 一键部署并启动 | 更改代码后重启项目配置
部署结构
在这里插入图片描述

entrypoint.sh

#!/bin/bash 
if [ ! -f "/etc/ssl/private/nginx-selfsigned.key" ];
then
sudo mkdir -p /etc/ssl/certs \
&& sudo mkdir -p /etc/ssl/private \
&& sudo openssl genrsa -out /etc/ssl/private/nginx-selfsigned.key 2048 \
&& sudo openssl req -new -subj "/C=US/ST=ShangHai/L=ShangHai/O=/OU=/CN=" -key /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.csr \
&& sudo mv /etc/ssl/private/nginx-selfsigned.key /etc/ssl/private/nginx-selfsigned.origin.key \
&& sudo openssl rsa -in /etc/ssl/private/nginx-selfsigned.origin.key  -out /etc/ssl/private/nginx-selfsigned.key \
&& sudo openssl x509 -req -days 3650 -in /etc/ssl/certs/nginx-selfsigned.csr  -signkey /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

fi

sudo cp /var/www/html/docker/nginx/default.conf /etc/nginx/conf.d/default.conf;
sudo nginx -s reload;

if [ ! -f "/etc/bash_profile" ];
then
    sudo touch /etc/bash_profile
    sudo chmod 777 /etc/bash_profile
fi
sudo echo 'PATH=$PATH:$HOME/bin:/usr/bin' >> /etc/bash_profile 
source /etc/bash_profile

if [ ! -d "/var/www/html/node_modules" ];
then
sudo npm install -y
fi

sudo npm run build

docker.sh

#!/bin/bash
if ! [ -x "$(command -v docker)" ]
 then 
   if [ -e /etc/os-release ]
   then
      source /etc/os-release	  
         echo 'os-release ' $ID $VERSION_ID;
      if [ $ID == centos -a $VERSION_ID -eq 8 ]
      then
            echo "dnf remove docker-----"
            # systemctl stop firewalld.service 
            sudo dnf remove docker-*

            echo "install device-mapper-persistent-data lvm2"   
            sudo dnf install device-mapper-persistent-data lvm2 -y
            sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
            echo "install docker-ce"   
            sudo dnf install docker-ce --nobest -y
            systemctl enable docker
            systemctl start docker
         elif  [ $ID == 'ubuntu' ]
         then   
          echo 'apt-get instll docker ----'
             sudo apt-get update
             sudo apt-get upgrade
             sudo apt-get install docker.io
             sudo service docker start
         else   
          
            echo 'yum instll docker -----'
            sudo yum remove docker-*
            sudo yum install -y yum-utils \
                  device-mapper-persistent-data \
                  lvm2      
            sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  
            sudo yum install docker-ce --nobest -y   
            systemctl enable docker
            systemctl start docker
      fi
   fi
fi

if ! [ -x "$(command -v docker-compose)" ]
  then
      sudo rm -rf /usr/local/bin/docker-compose && rm -rf /usr/bin/docker-compose
      echo "curl docker-compose"
      sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      echo "chmod docker-compose"
      sudo chmod +x /usr/local/bin/docker-compose
      echo "ln doker-compose"
      sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
      docker-compose --version
fi

export DOCKER_SH_MY_PATH=`pwd`
# export $(xargs < $path/.env)
cd docker

if docker inspect -f "{{.State.Running}}" web >/dev/null 2>&1; then
    docker compose restart web
fi
if docker inspect -f "{{.State.Running}}" vue >/dev/null 2>&1; then
    docker compose restart vue
fi

docker compose up -d 

Dockerfile

FROM centos:latest

WORKDIR /var/www/html

RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* \ 
&& sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* \
&& yum makecache && dnf distro-sync -y \
&& dnf install -y curl git sudo psmisc net-tools\
&& dnf module reset -y nginx && dnf module enable -y nginx:1.20 && dnf module list  nginx && dnf install -y nginx && systemctl enable nginx \
&& dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm \
&& dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.4.rpm \
&& dnf repolist \
&& dnf module enable php:remi-8.0 -y && dnf module disable php:remi-8.0 -y && dnf module enable php:remi-8.2 -y \
&& dnf install -y php php-cli php-common php-fpm  && systemctl enable php-fpm \
&& dnf install -y php-gd php-imagick php-zip php-redis php-swoole php-xdebug php-mysql php-memcached php-soap\
&& php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
&& curl --silent --location https://rpm.nodesource.com/setup_18.x | bash -  \
&& dnf install -y nodejs && npm install -g npm\
&& curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo \
&& dnf install -y yarn \
&& dnf install -y supervisor &&  systemctl enable supervisord\
&& rm -rf /tmp/* /var/tmp/*

RUN groupadd  sail 
RUN useradd -ms /bin/bash --no-user-group -g sail -u 1337 sail && echo "sail ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN mkdir -p /var/log/docker && chmod -R 744 /var/log/docker

RUN sed -i 's/pid = \/run\/php-fpm\/php-fpm.pid/pid =\/usr\/sbin\/php-fpm.pid/g' /etc/php-fpm.conf \ 
&& sed -i 's/\/run\/php-fpm\/www.sock/127.0.0.1:9000/g' /etc/php-fpm.d/www.conf \ 
&& sed -i 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf \ 
&& sed -i 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf 

docker-compose.yaml

#!/bin/bash
if ! [ -x "$(command -v docker)" ]
 then 
   if [ -e /etc/os-release ]
   then
      source /etc/os-release	  
         echo 'os-release ' $ID $VERSION_ID;
      if [ $ID == centos -a $VERSION_ID -eq 8 ]
      then
            echo "dnf remove docker-----"
            # systemctl stop firewalld.service 
            sudo dnf remove docker-*

            echo "install device-mapper-persistent-data lvm2"   
            sudo dnf install device-mapper-persistent-data lvm2 -y
            sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
            echo "install docker-ce"   
            sudo dnf install docker-ce --nobest -y
            systemctl enable docker
            systemctl start docker
         elif  [ $ID == 'ubuntu' ]
         then   
          echo 'apt-get instll docker ----'
             sudo apt-get update
             sudo apt-get upgrade
             sudo apt-get install docker.io
             sudo service docker start
         else   
          
            echo 'yum instll docker -----'
            sudo yum remove docker-*
            sudo yum install -y yum-utils \
                  device-mapper-persistent-data \
                  lvm2      
            sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  
            sudo yum install docker-ce --nobest -y   
            systemctl enable docker
            systemctl start docker
      fi
   fi
fi

if ! [ -x "$(command -v docker-compose)" ]
  then
      sudo rm -rf /usr/local/bin/docker-compose && rm -rf /usr/bin/docker-compose
      echo "curl docker-compose"
      sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      echo "chmod docker-compose"
      sudo chmod +x /usr/local/bin/docker-compose
      echo "ln doker-compose"
      sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
      docker-compose --version
fi

export DOCKER_SH_MY_PATH=`pwd`
# export $(xargs < $path/.env)
if [ -d '.git' ]; then
    git pull origin master
fi

cd docker

if docker inspect -f "{{.State.Running}}" web >/dev/null 2>&1; then
    docker compose restart web
fi
if docker inspect -f "{{.State.Running}}" vue >/dev/null 2>&1; then
    docker compose restart vue
fi


docker compose up -d
  

supervisor.ini

[supervisord]
nodaemon=true
user=root
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid

[program:nginx]
directory=/usr/sbin
command=/usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
user=root                                               
autostart=true                                       
autorestart=true                                     
stopasgroup=true                                        
killasgroup=true                                        
stdout_logfile=/var/log/nginx/supervisord-out.log         
stderr_logfile=/var/log/nginx/supervisord-err.log

[program:php-fpm]
directory=/usr/sbin
command=sudo /usr/sbin/php-fpm --nodaemonize -c /etc/php-fpm.conf
user=sail
killasgroup=true
stopasgroup=true
autostart=true
autorestart = true
stdout_logfile=/var/log/php-fpm/std-out.log
stdout_logfile_maxbytes=0
stderr_logfile=/var/log/php-fpm/std-err.log
stderr_logfile_maxbytes=0

[program:web]
command=sh /var/www/html/docker/entrypoint.sh
user=sail
environment=LARAVEL_SAIL="1"
stdout_logfile=/var/log/docker/web-std-out.log
stderr_logfile=/var/log/docker/web-std-err.log

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目名称:自助洗车平台 项目背景:随着汽车保有量的不断增长,洗车市场逐渐形成。但传统洗车方式存在排污、耗水、人工成本高等问题,自助洗车成为一种新兴的洗车方式。本项目旨在建立一个自助洗车平台,方便消费者进行自主洗车,减少传统洗车方式的不利影响。 项目职责: 1. 架构设计:设计并实现自助洗车平台的架构,包括前端、后端、数据库、缓存、负载均衡、日志等组件的选择和配置。其中,Nginx 负责反向代理和负载均衡,Tomcat 负责处理业务逻辑,keepalived 实现高可用性,redis 缓存常用数据,MySQL 存储洗车记录,inotify+rsync 实现文件同步,ELK 实现日志管理和分析。 2. 系统开发:基于 Spring Boot 框架,使用 Java 语言开发自助洗车平台的后端系统,实现洗车订单管理、设备管理、用户管理、支付管理等功能。同时,使用 Vue.js 开发前端页面,实现用户注册、登录、下单、支付等功能。 3. 数据库设计:设计并实现 MySQL 数据库,建立洗车订单表、设备信息表、用户信息表、支付记录表等,实现数据的存储和管理。 4. 缓存设计:使用 Redis 缓存常用数据,如用户信息、设备状态等,提高系统的响应速度和并发能力。 5. 日志管理:使用 ELK(Elasticsearch、Logstash、Kibana)实现日志的收集、分析和管理,方便运维人员进行系统监控和问题排查。 6. 系统部署:使用 Docker 镜像技术,将自助洗车平台的各个组件打包成镜像,并使用 Kubernetes 进行容器编排和部署,实现系统的高可用性和自动化运维。 7. 系统监控:使用 Zabbix 实现系统监控,包括 CPU、内存、磁盘、网络等性能指标的监控和告警,保障系统的稳定性和可靠性。 项目收益: 1. 提高用户体验:通过自助洗车平台,消费者可以方便、快捷地进行洗车,提高用户体验和满意度。 2. 减少人工成本:自助洗车平台减少了人工操作和管理成本,提高了洗车效率和经济效益。 3. 降低环境污染:自助洗车平台的洗车方式较传统方式更为环保,减少了水资源和废水排放,降低了环境污染。 4. 提高系统运维效率:通过自动化运维和日志管理,减少人工操作,提高系统稳定性和运维效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值