GVKun编程网logo

docker-compose 部署 nginx+php 环境(docker部署nginx和php)

14

对于docker-compose部署nginx+php环境感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解docker部署nginx和php,并且为您提供关于.NetCore+Nginx+M

对于docker-compose 部署 nginx+php 环境感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解docker部署nginx和php,并且为您提供关于.Net Core+Nginx+Mysql使用Docker-Compose实现多容器化部署、Docker Compose 部署 nginx 代理 Tomcat 集群、Docker Compose 部署Nginx服务实现负载均衡、Docker Compose、Nginx和MariaDB的开箱即用解决方案:快速搭建PHP环境的宝贵知识。

本文目录一览:

docker-compose 部署 nginx+php 环境(docker部署nginx和php)

docker-compose 部署 nginx+php 环境(docker部署nginx和php)

docker-compose.yml 配置文件如下

version: "2"
services:
  nginx:
    image: nginx:alpine
    container_name: my-nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./conf/nginx/conf.d/:/etc/nginx/conf.d/:ro
      - ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./log/nginx/:/var/log/nginx/:rw
      - ./www/:/var/www/:rw
    networks:
      - net-php

  php:
    build: ./php/php56/
    expose:
      - "9000"
    volumes:
      - ./conf/php/php.ini:/etc/php/php.ini:ro
      - ./conf/php/php-fpm.conf:/etc/php/php-fpm.conf:ro
      - ./log/php/:/var/log/php/:rw
      - ./www/:/var/www/:rw
    networks:
      - net-php


networks:
  net-php:

 php5.6 Dockerfile 如下

FROM alpine:3.3

RUN echo "http://dl-cdn.alpinelinux.org/alpine/v3.3/main" > /etc/apk/repositories

ENV TIMEZONE Asia/Shanghai

RUN apk update && \
  apk add --no-cache tzdata && \
  cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && \
  echo "${TIMEZONE}" > /etc/timezone && \
  apk add php-intl \
    php-mcrypt \
    php-openssl \
    php-gmp \
    php-json \
    php-dom \
    php-pdo \
    php-zip \
    php-zlib \
    php-mysqli \
    php-bcmath \
    php-gd \
    php-xcache \
    php-pdo_mysql \
    php-gettext \
    php-xmlreader \
    php-xmlrpc \
    php-bz2 \
    php-memcache \
    php-iconv \
    php-curl \
    php-ctype \
    php-fpm \
    php-phar \
    php && \
  apk del tzdata && \
  rm -rf /var/cache/apk/*
RUN set -x \
  && addgroup -g 82 -S www-data \
  && adduser -u 82 -D -s /sbin/nologin -h /var/www -G www-data www-data
RUN mkdir /var/log/php \
  && chown -R www-data:www-data /var/log/php \
  && chmod -R 774 /var/log/php

EXPOSE 9000
CMD ["php-fpm", "-F"]

  

.Net Core+Nginx+Mysql使用Docker-Compose实现多容器化部署

.Net Core+Nginx+Mysql使用Docker-Compose实现多容器化部署

 

 

 一:构建docker-compose.yml文件

version: '3'
services:
    MysqL.db:
     container_name: MysqL.db
     image: MysqL
     restart: always
     environment:
       MysqL_ROOT_PASSWORD: xxxxx
     command:
      --lower_case_table_names=1
      #--initialize-insecure
     volumes:
      - /home/MysqL/:/var/lib/MysqL
     ports:
      - 3306:3306
     
    dotnetapi:
        container_name: dotnetapicontains
        build: .
        depends_on:
          -  MysqL.db
        links:
          -  MysqL.db
    reverse-proxy:
        container_name: reverse-proxy
        image: Nginx
        depends_on:
        - dotnetapi
        ports:
         - "5002:5002"
        volumes:
         - ./proxy.conf:/etc/Nginx/conf.d/default.conf

其中定义了三个服务:

  1. myql.db:使用MysqL镜像,并挂载当前项目下的/home/MysqL/文件夹来持久化存储,参数顺序一定不要乱,不然会入坑。,
    --lower_case_table_names=1数据库忽略大小写
  2. dotnetapi:基于当前项目构建的容器服务,依赖于MysqL.db服务。
  3. reverse-proxy:使用Nginx定义反向代理服务,其中挂载了当前项目下的proxy.conf文件作为反向代理配置文件。其中proxy.conf的配置如下(注意proxy_pass指定的url为http://dotentapi:5002)

二:构建proxy.conf文件

server {
    listen 5002;
    location / {
      proxy_pass http://dotnetapi:5002;
    }
}

三:使用docker-compose命令发布

docker-compose up -d  #后台运行

docker-compose up

 

Docker Compose 部署 nginx 代理 Tomcat 集群

Docker Compose 部署 nginx 代理 Tomcat 集群

一、简介

  使用 Docker 镜像部署 Nginx 代理的多个 Tomcat 集群:

  • 使用 Dockerfile 构建 nginx 镜像
  • 使用 Dockerfile 构建 tomcat 镜像
  • mysql 镜像使用 docker hub 镜像

  1.1 结构

docker-compose.yml 
etc
└── localtime
mysql
├── conf
│   └── my.cnf
└── mysqldb
nginx
├── conf.d
│   └── test.conf
├── Dockerfile
├── logs
├── nginx-1.12.1.tar.gz
└── nginx.conf
tomcat
├── apache-tomcat-8.5.12.tar.gz
├── Dockerfile
├── jdk-8u121-linux-x64.tar.gz
└── server.xml
webapps

# webapps 用于放置tomcat项目使用

# mysqldb 数据将会存放在 mysql/mysqldb中

  

二、部署和构建

  2.1 Nginx Dockerfile

FROM centos:latest
MAINTAINER bigberg
RUN yum -y install pcre-devel openssl-devel net-tools gcc gcc-c++ zlib zlib-devel \
    make openssl
ADD nginx-1.12.1.tar.gz /tmp/
RUN cd /tmp/nginx-1.12.1 \
    && ./configure --prefix=/usr/local/nginx \
     --with-http_ssl_module \
     --with-http_gzip_static_module \
     --with-http_realip_module \
    && make && make install
RUN mkdir -p /usr/local/nginx/logs \
    && groupadd -g 1001 nginx \
    && useradd -g 1001 -u 1001 -s /sbin/nologin -M nginx

CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
nginx dockerfile

  2.2 Tomcat Dockerfile

FROM centos
MAINTAINER bigberg

ADD jdk-8u121-linux-x64.tar.gz /usr/local
ENV JAVA_HOME /usr/local/jdk1.8.0_121
ADD apache-tomcat-8.5.12.tar.gz /usr/local
COPY server.xml /usr/local/apache-tomcat-8.5.12/conf/server.xml

EXPOSE 8080
ENTRYPOINT ["/usr/local/apache-tomcat-8.5.12/bin/catalina.sh", "run"]
Tomcat Dockerfile

  2.3 docker-compose.yml  

version: ''3''
services:
  # web-server  
  nginx:
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - "80:80"
      - "443:443"
    links:
      - tomcat01:tomcat01
      - tomcat02:tomcat02
      - tomcat03:tomcat03
    volumes:
      - ./webapps:/opt/webapps
      - ./nginx/logs:/usr/local/nginx/logs
      - ./etc/localtime:/etc/localtime
      - ./nginx/nginx.conf:/usr/local/nginx/conf/nginx.conf:ro
      - ./nginx/conf.d/:/usr/local/nginx/conf.d/:ro
    depends_on:
      - mysql
      - tomcat01
      - tomcat02
      - tomcat03
  # tomcat
  tomcat01:
    hostname: tomcat01
    build: ./tomcat
    links:
      -  mysql:mysql
    volumes:
      - ./webapps:/usr/local/apache-tomcat-8.5.12/webapps
      - ./etc/localtime:/etc/localtime

  tomcat02:
    hostname: tomcat02
    build: ./tomcat
    links:
      -  mysql:mysql
    volumes:
      - ./webapps:/usr/local/apache-tomcat-8.5.12/webapps
      - ./etc/localtime:/etc/localtime

  tomcat03:
    hostname: tomcat03
    build: ./tomcat
    links:
      -  mysql:mysql
    volumes:
      - ./webapps:/usr/local/apache-tomcat-8.5.12/webapps
      - ./etc/localtime:/etc/localtime

  # mysql
  mysql:
    hostname: mysql
    image: mysql:latest
    ports:
     - "3307:3306"
    volumes:
      - ./mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./mysql/mysqldb:/var/lib/mysql
      - ./etc/localtime:/etc/localtime:ro
    environment:
      - MYSQL_ROOT_PASSWORD=123456
docker-compose.yml

 

 

 

  2.4 编写 index.jsp 文件

sudo mkdir webapps/ROOT

sudo vim webapps/ROOT/index.jsp


nginx-tomcat cluster

  2.5 构建

docker-compose up

  2.6 查看

$ docker-compose ps
         Name                       Command               State                    Ports                  
----------------------------------------------------------------------------------------------------------
nginxtomcat_mysql_1      docker-entrypoint.sh mysqld      Up      0.0.0.0:3307->3306/tcp                  
nginxtomcat_nginx_1      /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
nginxtomcat_tomcat01_1   /usr/local/apache-tomcat-8 ...   Up      8080/tcp                                
nginxtomcat_tomcat02_1   /usr/local/apache-tomcat-8 ...   Up      8080/tcp                                
nginxtomcat_tomcat03_1   /usr/local/apache-tomcat-8 ...   Up      8080/tcp

  

  相关文档:https://github.com/Bigberg/docker/tree/master/nginx-tomcat

                         里面去掉了 nginx/tomcat/jdk 的安装包,需添加(版本在 Dockerfile 中)

Docker Compose 部署Nginx服务实现负载均衡

Docker Compose 部署Nginx服务实现负载均衡

Compose简介:

Compose是Docker容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose,不再需要使用shell脚本来启动容器。
Compose通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用。
docker-compose默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过image 指令指定镜像或 build指令(需要Dockerfile)来自动构建镜像。
1
2
3
1.下载并安装docker-compose

安装包:(二进制文件)

docker-compose-Linux-x86_64-1.22.0
1
#1.下载
[root@server1 ~]# ls
docker-compose-Linux-x86_64-1.22.0
#2.拷贝二进制文件
[root@server1 ~]# mv docker-compose-Linux-x86_64-1.22.0 /usr/local/bin/docker-compose
#3.添加权限
[root@server1 ~]# chmod +x /usr/local/bin/docker-compose
1
2
3
4
5
6
7
2.创建目录

[root@server1 ~]# cd /tmp/
[root@server1 tmp]# mkdir docker
[root@server1 tmp]# ls
docker
[root@server1 tmp]# cd docker/
[root@server1 docker]# pwd
/tmp/docker
[root@server1 docker]# mkdir compose
[root@server1 docker]# cd compose/
[root@server1 compose]# ls
1
2
3
4
5
6
7
8
9
10
3.编写compose文件

[root@server1 compose]# vim docker-compose.yml
#######################
web1: #容器名称
image: Nginx #镜像名称
expose: #对外暴露端口
- 80
volumes: #挂载卷
- ./web1:/usr/share/Nginx/html #将当前目录下的web1挂载到容器的/usr/share/Nginx/html 目录下
web2:
image: Nginx
expose:
- 80
volumes:
- ./web2:/usr/share/Nginx/html

haproxy:
image: haproxy
volumes:
- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro #只读挂载
links: #容器链接
- web1
- web2
ports: #端口映射
- "80:80"
expose:
- "80"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

4.编写发布文件

[root@server1 compose]# mkdir web1
[root@server1 compose]# mkdir web2
[root@server1 compose]# echo web1 > web1/index.html
[root@server1 compose]# echo web2 > web2/index.html
1
2
3
4
5.编写haproxy文件

haproy:提供负载均衡
1
[root@server1 compose]# mkdir haproxy
[root@server1 compose]# cd haproxy/
[root@server1 haproxy]# ls
[root@server1 haproxy]# vim haproxy.cfg
#######################
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice

defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
stats uri /status

frontend balancer
bind 0.0.0.0:80
default_backend web_backends

backend web_backends
balance roundrobin #轮询算法;check表示健康检查
server server1 web1:80 check
server server2 web2:80 check
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27


[root@server1 haproxy]# ls
haproxy.cfg
[root@server1 haproxy]# cd ..
[root@server1 compose]# ls
docker-compose.yml haproxy web1 web2
1
2
3
4
5
6.下载并导入镜像

镜像:

Nginx.tar
ubuntu.tar
1
2
#1.下载镜像
[root@server1 ~]# ls
Nginx.tar ubuntu.tar
#2.导入镜像
[root@server1 ~]# docker load -i Nginx.tar
[root@server1 ~]# docker load -i haproxy.tar
#3.查看年镜像
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
Nginx latest 881bd08c0b08 2 weeks ago 109MB
haproxy latest fbd1f55f79b3 3 years ago 139MB
1
2
3
4
5
6
7
8
9
10
11
7.启动compose

[root@server1 ~]# cd /tmp/docker/compose
#启动;注意必须在此路径下才能执行
[root@server1 compose]# docker-compose up -d
1
2
3


#查看日志
[root@server1 compose]# docker-compose logs
Attaching to compose_haproxy_1, compose_web1_1, compose_web2_1
haproxy_1 | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds
1
2
3
4
测试:

输入: http://172.25.66.1/status 发现可以实现健康检查
1


输入:http://172.25.66.1/ 刷新网页,发现可以实现轮询
1


管理compose:

#必须先关闭才能删除
[root@server1 haproxy]# docker-compose stop
[root@server1 haproxy]# docker-compose rm
1
2
3


#下次想再使用,只需再开启即可
[root@server1 haproxy]# docker-compose up -d
1
2

————————————————
版权声明:本文为CSDN博主「奋斗吧,青年!」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lilygg/article/details/88760613

Docker Compose、Nginx和MariaDB的开箱即用解决方案:快速搭建PHP环境

Docker Compose、Nginx和MariaDB的开箱即用解决方案:快速搭建PHP环境

docker compose、nginx和mariadb的开箱即用解决方案:快速搭建php环境

Docker Compose、Nginx和MariaDB的开箱即用解决方案:快速搭建PHP环境

概述:

在开发和部署PHP应用程序时,搭建一个可靠且易于管理的环境是至关重要的。Docker Compose、Nginx和MariaDB可以提供一个快速搭建PHP环境的解决方案。本文将介绍如何使用Docker Compose来配置和运行容器,使用Nginx作为Web服务器,使用MariaDB作为数据库,快速搭建PHP环境。

一、安装Docker和Docker Compose:

立即学习“PHP免费学习笔记(深入)”;

首先,我们需要在本地机器上安装Docker和Docker Compose。可以在Docker官方网站上找到适用于不同操作系统的安装指南。安装完成后,验证安装是否成功,可以在终端或命令提示符中输入以下命令:

docker --version
docker-compose --version
登录后复制

如果能够正确显示版本号,则表示Docker和Docker Compose已成功安装。

二、创建Docker Compose文件:

接下来,我们需要创建一个名为docker-compose.yml的文件,并在其中定义我们的服务和容器配置。

version: ''3''
services:
  nginx:
    build:
      context: .
      dockerfile: nginx.dockerfile
    ports:
      - 80:80
    depends_on:
      - php
  php:
    build:
      context: .
      dockerfile: php.dockerfile
    volumes:
      - ./src:/var/www/html
  mariadb:
    image: mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=secret
登录后复制

解释:

  • nginx服务:使用build指令构建一个基于Nginx的容器,将本地机器的80端口映射到容器的80端口,依赖于php服务。
  • php服务:使用build指令构建一个包含必要PHP扩展的容器,将本地机器的./src目录挂载到容器的/var/www/html目录,实现代码的同步更新。
  • mariadb服务:使用默认的MariaDB Docker镜像,设置ROOT密码为secret。

三、创建Dockerfile和配置文件:

接下来,我们需要创建Dockerfile和配置文件,以便在构建镜像时提供必要的配置和依赖。

  1. nginx.dockerfile:
FROM nginx

COPY nginx.conf /etc/nginx/nginx.conf
COPY default.conf /etc/nginx/conf.d/default.conf
登录后复制

解释:从官方的Nginx镜像构建一个新的镜像,然后将本地的nginx.conf和default.conf文件复制到容器的相应位置。

  1. php.dockerfile:
FROM php:7.4-fpm

RUN apt-get update && apt-get install -y 
    zlib1g-dev 
    libzip-dev 
    && docker-php-ext-install zip pdo_mysql

COPY php.ini /usr/local/etc/php/conf.d/custom.ini
登录后复制

解释:从官方的PHP镜像构建一个新的镜像,然后使用apt-get命令安装必要的依赖,并通过docker-php-ext-install命令安装zip和pdo_mysql扩展。最后将本地的php.ini文件复制到容器中。

  1. nginx.conf:
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  ''$remote_addr - $remote_user [$time_local] "$request" ''
                      ''$status $body_bytes_sent "$http_referer" ''
                      ''"$http_user_agent" "$http_x_forwarded_for"'';

    access_log  /var/log/nginx/access.log  main;
    
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        root   /var/www/html;
        index  index.php index.html;

        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;
        }
    }
}
登录后复制

解释:这是Nginx的配置文件。配置了默认的日志路径、事件设置、http设置和一个基本的server块,用于处理请求,并将PHP处理交给php容器。

  1. default.conf:
server {
    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;
    }
}
登录后复制

解释:这是Nginx的默认配置文件。与nginx.conf文件中的server块设置相同。

四、开始构建和运行容器:

在设置完所有配置文件之后,我们可以开始构建和运行容器了。在终端或命令提示符中,进入docker-compose.yml文件所在的目录,然后运行以下命令:

docker-compose up --build
登录后复制

这条命令将启动构建镜像和运行容器的过程。一旦完成,你将会看到容器正在运行,并且可以通过http://localhost访问PHP应用程序。

如果需要在后台运行容器,可以使用以下命令:

docker-compose up -d --build
登录后复制

这条命令将以守护进程模式运行容器。

总结:

通过Docker Compose、Nginx和MariaDB的开箱即用解决方案,我们可以快速搭建和管理PHP环境。Docker的可移植性和容器化的优势,使得开发和部署PHP应用程序变得更加简单和可靠。希望本文对你有所帮助,有关代码示例的更多细节,请参阅本文所提到的配置文件。

以上就是Docker Compose、Nginx和MariaDB的开箱即用解决方案:快速搭建PHP环境的详细内容,更多请关注php中文网其它相关文章!

关于docker-compose 部署 nginx+php 环境docker部署nginx和php的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于.Net Core+Nginx+Mysql使用Docker-Compose实现多容器化部署、Docker Compose 部署 nginx 代理 Tomcat 集群、Docker Compose 部署Nginx服务实现负载均衡、Docker Compose、Nginx和MariaDB的开箱即用解决方案:快速搭建PHP环境等相关知识的信息别忘了在本站进行查找喔。

本文标签: