对于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)
- .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.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实现多容器化部署
一:构建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
其中定义了三个服务:
- myql.db:使用MysqL镜像,并挂载当前项目下的/home/MysqL/文件夹来持久化存储,参数顺序一定不要乱,不然会入坑。,
--lower_case_table_names=1数据库忽略大小写
- dotnetapi:基于当前项目构建的容器服务,依赖于MysqL.db服务。
- 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 镜像部署 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;"]
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"]
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
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服务实现负载均衡
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环境
概述:
在开发和部署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文件:
接下来,我们需要创建一个名为
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和配置文件,以便在构建镜像时提供必要的配置和依赖。
- 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文件复制到容器的相应位置。
- 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文件复制到容器中。
- 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容器。
- 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环境等相关知识的信息别忘了在本站进行查找喔。
本文标签: