docker部署lnmp

docker部署lnmp

n m p

nginx 1.22 172.111.0.10 docker----nginx

mysql 8.0.30 172.111.0.20 docker----mysql

php 8.1.27 172.111.0.30 docker----php

docker:单节点部署(只能在一台机器上部署,跨了机器容器无法通信。)

做高可用只能在节点上增加同一服务的容器数量。

操作步骤:

docker安装nginx
[root@docker1 opt]# mkdir nginx mysql php
[root@docker1 opt]# ls
mysql  nginx  php
[root@docker1 opt]# cd nginx/
[root@docker1 nginx]# ls
nginx-1.22.0.tar.gz  wordpress-6.5.2-zh_CN.zip
​
[root@docker1 nginx]# vim Dockerfile
FROM centos:7
MAINTAINER this is nginx <lnmp>
RUN rm -rf /etc/yum.repos.d/*
ADD  http://mirrors.aliyun.com/repo/Centos-7.repo /etc/yum.r
epos.d/Centos-7.repo
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
ADD nginx-1.22.0.tar.gz /usr/local/src/
RUN useradd -M -s /sbin/nologin nginx
WORKDIR /usr/local/src/nginx-1.22.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make -j 4 && make install
ENV PATH /usr/local/nginx/sbin/:$PATH
COPY nginx.conf /usr/local/nginx/conf/
ADD wordpress-6.4.2-zh_CN.tar.gz /usr/local/nginx/html/
RUN chmod 777 -R /usr/local/nginx/html/
EXPOSE 80
VOLUME ["/usr/local/nginx/html/"]
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
​
[root@docker1 nginx]# vim nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
​
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        charset utf-8;
        location / {
            root   html;
            index  index.html index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ \.php$ {
            root           html;
            fastcgi_pass   172.111.0.30:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }
}
}
​
[root@docker1 nginx]# docker build -t nginx:lnmp .
​
[root@docker1 nginx]# docker network create --subnet=172.111.0.0/16 --opt "com.docker.network.brige.name"="docker1" mynetwork
​
[root@docker1 nginx]# docker run -itd --name nginx -p 80:80 -m 512m -v /opt/nhtml:/opt/nginx --net mynetwork --ip 172.111.0.10 nginx:lnmp
[root@841f0b4cafbd nginx-1.22.0]# yum -y install net-tools
[root@841f0b4cafbd nginx-1.22.0]# netstat -antp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1/nginx: master pro 
tcp        0      0 172.111.0.10:80         192.168.60.1:54579      FIN_WAIT2   -                   
tcp        0      0 172.111.0.10:80         192.168.60.1:54577      FIN_WAIT2   -                   
tcp        0      0 172.111.0.10:42312      218.92.233.92:80        TIME_WAIT   -     
[root@841f0b4cafbd html]# cd /usr/local/nginx/
[root@841f0b4cafbd nginx]# cd html/
[root@841f0b4cafbd html]# ls
50x.html  index.html  wordpress
[root@841f0b4cafbd html]# echo 123 > index.html 
[root@841f0b4cafbd html]# 
​

docker安装mysql
[root@docker1 mysql]# vim my.conf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
​
[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
​
[root@docker1 mysql]# vim Dockerfile
FROM centos:7
MAINTAINER this is mysql<lnmp>
RUN rm -rf /etc/yum.repos.d/*
ADD  http://mirrors.aliyun.com/repo/Centos-7.repo /etc/yum.repos.d/Centos-7.repo
RUN yum -y install libaio numactl-libs pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin mysql
ADD mysql-8.0.30-el7-x86_64.tar.gz /usr/local
RUN mv /usr/local/mysql-8.0.30-el7-x86_64 /usr/local/mysql
COPY my.conf /etc/my.cnf
EXPOSE 3306
RUN chown -R mysql:mysql /usr/local/mysql && chown mysql:mysql /etc/my.cnf
ENV PATH=/usr/local/mysql/bin/:/usr/local/mysql/lib:$PATH
WORKDIR /usr/local/mysql/bin
RUN ./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
VOLUME ["/usr/local/mysql"]
ENTRYPOINT ["./mysqld"]
​
[root@docker1 mysql]# docker run -itd --name mysql -p 3306:3306 --privileged -v /opt/mysql1:/opt/mysql --net mynetwork --ip 172.111.0.20 mysql:lnmp
[root@docker1 mysql]# docker exec -it mysql bash
[root@efacf8b82672 bin]# mysql -u root -p
Enter password:
mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)
 
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)
​
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
Query OK, 0 rows affected (0.01 sec)
​
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.00 sec)
​
mysql> CREATE USER 'wordpress'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
​
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%';
Query OK, 0 rows affected (0.00 sec)
​
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
docker安装php
[root@docker1 php]# ls
php-8.1.27.tar.gz  php-fpm.conf  php.ini  www.conf
[root@docker1 php]# vim Dockerfile
FROM centos:7
MAINTAINER this is php<lnmp>
RUN rm -rf /etc/yum.repos.d/*
ADD  http://mirrors.aliyun.com/repo/Centos-7.repo /etc/yum.repos.d/Centos-7.repo
RUN yum -y install epel-release
RUN yum -y install gcc gcc-c++ make \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel \
oniguruma-devel \
sqlite-devel
ADD php-8.1.27.tar.gz /usr/local/src
WORKDIR /usr/local/src/php-8.1.27
RUN ./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-pdo-mysql \
--with-openssl \
--with-sqlite-devel \
--with-oniguruma-devel \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip && make -j 4 && make install
ENV PATH /usr/local/php/bin/:/usr/loacl/php/sbin:$PATH
COPY php.ini /usr/local/php/lib/
COPY php-fpm.conf /usr/local/php/etc/
COPY www.conf /usr/local/php/etc/php-fpm.d/
EXPOSE 9000
ENTRYPOINT ["/usr/local/php/sbin/php-fpm","-F"]
​
[root@docker1 php]# docker build -t php:lnmp .
​
[root@docker1 php]# docker run -itd --name php --net mynetwork --ip 172.111.0.30 -p 9000:9000 --volumes-from nginx --volumes-from mysql php:lnmp
[root@docker1 php]# docker exec -it php bash
[root@eb9f7c2d67a3 php-8.1.27]# cd /usr/local/
[root@eb9f7c2d67a3 local]# ls
bin  games    lib    libexec  nginx  sbin   src
etc  include  lib64  mysql    php    share
[root@eb9f7c2d67a3 local]# cd mysql/
[root@eb9f7c2d67a3 mysql]# cd ..
[root@eb9f7c2d67a3 local]# cd nginx/
[root@eb9f7c2d67a3 nginx]# ls
html
[root@eb9f7c2d67a3 nginx]# cd html/
[root@eb9f7c2d67a3 html]# ls
50x.html  index.html  wordpress
[root@eb9f7c2d67a3 html]# yum -y install net-tools
​

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Docker部署LNMP架构(Linux+Nginx+MySQL+PHP),首先需要安装DockerDocker Compose。你可以按照以下步骤进行部署: 1. 安装DockerDocker Compose: 首先,按照引用中的指引,配置Docker的yum源,并安装DockerDocker Compose。安装完成后,启动Docker服务。 2. 准备部署文件: 下载引用中的docker-lnmp项目,将docker-compose-linux-x86_64-v2.5.0文件移动到/usr/local/bin目录下,并赋予执行权限。 3. 编辑docker-compose.yml文件: 进入docker-lnmp项目文件夹,在该目录下找到docker-compose.yml文件,并使用任意文本编辑器进行编辑。根据你的需求,可以对镜像版本、端口映射、环境变量等进行配置。 4. 运行Docker Compose: 在docker-lnmp项目文件夹中打开终端,并执行以下命令: ``` docker-compose up -d ``` 这将启动LNMP架构的Docker容器,并在后台运行。 5. 验证部署: 使用浏览器访问本地主机的Nginx服务,默认端口为80。如果一切正常,你应该能够看到Nginx的欢迎页面。 通过以上步骤,你可以使用Docker快速部署LNMP架构,并实现应用程序的隔离性和安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Docker部署LNMP完整教程](https://blog.csdn.net/ThesCript_j/article/details/107402923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [docker部署lnmp架构](https://blog.csdn.net/weixin_65643437/article/details/131124609)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值