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