docker-compose 部署lnmp
1、简介
docker 和 docker-compose部署在宿主机上
mysql部署宿主机上
php和nginx跑docker容器
2、文件目录
3、docker 和 docker-compose部署
docker安装
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#安装esp源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#安装docker-ce
yum install -y docker-ce
#docker-compose安装,下载地址:http://get.daocloud.io/#install-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#添加可执行权限
chmod +x /usr/local/bin/docker-compose
#创建软连接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#重启docker
systemctl restart docker
4、安装mysql5.7
5、部署nginx容器
5.1、nginx目录详情
5.2、下载nginx包
http://nginx.org/en/download.html
5.3、编写nginx的dockerfile
vim dockerfile
FROM centos:7
MAINTAINER cyz
#安装依赖包
RUN yum install -y gcc gcc-c++ make \
openssl-devel pcre-devel gd-devel \
iproute net-tools telnet wget curl --nogpgcheck&& \
yum clean all && \
rm -rf /var/cache/yum/*
#下载nginx包,并编译安装
RUN wget http://nginx.org/download/nginx-1.19.10.tar.gz && \
tar zxf nginx-1.19.10.tar.gz && \
cd nginx-1.19.10 &&\
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module && \
make -j 4 && make install && \
rm -rf /usr/local/nginx/html/* && \
echo "ok" >> /usr/local/nginx/html/status.html && \
cd / && rm -rf nginx-1.19.10* && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#设置环境变量
ENV PATH $PATH:/usr/local/nginx/sbin
#拷贝宿主机的上配置文件到容器内
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
RUN mkdir -p /usr/share/nginx
#ADD ssl.tar.gz /usr/share/nginx/ssl
#设置工作目录
WORKDIR /usr/local/nginx
#设置端口
EXPOSE 80
EXPOSE 443
#运行nginx
CMD ["nginx", "-g", "daemon off;"]
5.4、编辑配置文件nginx.conf
[root@CentOS7-on-line nginx]# vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /var/www/html; #工作目录,源码存放位置
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
#配置代理php
location ~ \.php$ {
root /var/www/html; #工作目录,源码存放位置
fastcgi_pass my-php:9000; #my-php 容器名称
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
# nginx代理websocket
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 3600s;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
}
}
}
6、部署php容器
编写php的dockerfile
[root@CentOS7-on-line 8.0.6]# vim Dockerfile
FROM php:8.0.6-fpm
MAINTAINER cyz
EXPOSE 9000
RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
#安装依赖包
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
libsqlite3-dev \
libssl-dev \
libcurl3-dev \
libxml2-dev \
libzzip-dev
#安装php扩展库 mysql gd
RUN apt-get update && docker-php-ext-install mysqli pdo_mysql && docker-php-ext-install gd
7、编写docker-compose.yml文件
[root@CentOS7-on-line docker-lnmp]# vim docker-compose.yml
version: "3"
services:
#php 容器
php:
build: ./php/8.0.6
container_name: my-php #容器名称
volumes: #挂载到宿主机目录下
- /home/docker-lnmp/www:/var/www/html
- /home/docker-lnmp/logs/JTBC/nginx-logs:/var/log/nginx
ports: #端口
- 9000:9000
networks: #容器所属网络
- lnmp
#nginx 容器
nginx:
build: ./nginx
container_name: my-nginx #容器名称
depends_on: #依赖容器,需要php启动成功再启动nginx
- php
volumes: #挂载到宿主机目录下
- /home/docker-lnmp/www:/var/www/html
- /home/docker-lnmp/logs/JTBC/php-logs:/var/log/php
# links:
# - php:php-fpm
ports: #端口
- 80:80
networks: #所属网络
- lnmp
networks: #自定义网络
lnmp:
8、执行docker-compose
docker-compose up -d #-d 表示后台执行
9、测试
[root@CentOS7-on-line nginx]# cat index.php
<?php
phpinfo();
?>
浏览器访问:ip+端口
禁止转载!!!