DOCKER LNMP 包括dockerflie使用

LNMP安装

Linux

MYSQL

PHP

启动wordpress服务

LNMP安装

Linux

Linux 系统基础镜像

systemctl disable --now firewalld

setenforce 0

setenforce: SELinux is disabled

docker pull centos:7

#从公有仓库中下载 centos7 作为系统基础镜像

docker images

创建目录

mkdir /opt/nginx

cd /opt/nginx

编写DOCKERFILE脚本

vim Dockerfile

 

FROM centos:7

MAINTAINER this is nginx image <lnmp>

RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make;useradd -M -s /sbin/nologin nginx

ADD nginx-1.12.0.tar.gz /usr/local/src/

WORKDIR /usr/local/src/nginx-1.12.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

ADD nginx.conf /usr/local/nginx/conf/

ADD wordpress-4.9.4-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;" ]

准备nginx.conf配置文件

ls

Dockerfile  nginx-1.12.0.tar.gz  nginx.conf  wordpress-4.9.4-zh_CN.tar.gz

egrep -v "^(.)*#(.)*$" nginx.conf | grep -v "^$"

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    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;

        }

    }

}

088c7982cb6877c9a29b1d113842930

生成镜像

docker build -t nginx:lnmp .

docker images

REPOSITORY   TAG       IMAGE ID       CREATED         SIZE

nginx        lnmp      35a6404fcfa1   5 seconds ago   522MB

centos       7         eeb6ee3f44bd   4 weeks ago     204MB

自定义网络

docker network create --subnet=172.111.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork #创建自定义网络

0cbe1bd0bd782bf1c8e69916d99427970196de22deb312f970e01030406d9b45

docker network ls

NETWORK ID     NAME        DRIVER    SCOPE

dd7a55d01f86   bridge      bridge    local

63ddf1e359e9   host        host      local

0cbe1bd0bd78   mynetwork   bridge    local

a4b66a8a6cd2   none        null      local

ifconfig docker1

docker1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500

        inet 172.111.0.1  netmask 255.255.0.0  broadcast 172.111.255.255

        ether 02:42:40:dc:e8:1d  txqueuelen 0  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

启动镜像容器

docker run -d --name nginx -p 80:80 -m 500m --memory-swap 1g --net mynetwork --ip 172.111.0.10 nginx:lnmp

57616d4ea225c82a50b731472b003dabfd681e8dc6c6ef85a9bb2f665354334b

docker ps -a

CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS                               NAMES

57616d4ea225   nginx:lnmp   "/usr/local/nginx/sb…"   13 seconds ago   Up 12 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx

docker inspect nginx

······

                        "IPv4Address": "172.111.0.10"

······

验证NGINX

curl http://192.168.111.80:80

<!DOCTYPE html>

<html>

<head>

<title>Welcome to nginx!</title>

<style>

    body {

        width: 35em;

        margin: 0 auto;

        font-family: Tahoma, Verdana, Arial, sans-serif;

    }

</style>

</head>

<body>

<h1>Welcome to nginx!</h1>

<p>If you see this page, the nginx web server is successfully installed and

working. Further configuration is required.</p>

 

<p>For online documentation and support please refer to

<a href="http://nginx.org/">nginx.org</a>.<br/>

Commercial support is available at

<a href="http://nginx.com/">nginx.com</a>.</p>

 

<p><em>Thank you for using nginx.</em></p>

</body>

</html>

MYSQL

创建目录

mkdir /opt/mysql

cd /opt/mysql/

编写DOCKERFILE

vim Dockerfile 

 

FROM centos:7

MAINTAINER this is mysql image <lnmp>

RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c++ make;useradd -M -s /sbin/nologin mysql

ADD mysql-boost-5.7.20.tar.gz /usr/local/src/

WORKDIR /usr/local/src/mysql-5.7.20/

RUN cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \

-DSYSCONFDIR=/etc \

-DSYSTEMD_PID_DIR=/usr/local/mysql \

-DDEFAULT_CHARSET=utf8  \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DWITH_BOOST=boost \

-DWITH_SYSTEMD=1;make -j4;make install

ADD my.cnf /etc/my.cnf

EXPOSE 3306

RUN chown -R mysql:mysql /usr/local/mysql/;chown mysql:mysql /etc/my.cnf

WORKDIR /usr/local/mysql/bin/

RUN ./mysqld \

--initialize-insecure \

--user=mysql \

--basedir=/usr/local/mysql \

--datadir=/usr/local/mysql/data;cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/;systemctl enable mysqld

ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH

VOLUME [ "/usr/local/mysql" ]

CMD ["/usr/sbin/init"]

准备my.conf文件

vim my.cnf

 

[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=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

生成镜像

docker build -t mysql:lnmp .

docker images

REPOSITORY   TAG       IMAGE ID       CREATED          SIZE

mysql        lnmp      49da8f7299af   3 minutes ago    9.98GB

nginx        lnmp      35a6404fcfa1   17 minutes ago   522MB

centos       7         eeb6ee3f44bd   4 weeks ago      204MB

启动镜像容器

docker run --name=mysql -d --privileged --device-write-bps /dev/sda:10M -v /usr/local/mysql --net mynetwork --ip 172.111.0.20 mysql:lnmp

ebafbdc1c4dcfc49406a7db8ee5a2afc54f5b4203d11ad374dba885ec4ef5afd

docker ps -a

CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS                               NAMES

ebafbdc1c4dc   mysql:lnmp   "/usr/sbin/init"         11 seconds ago   Up 10 seconds   3306/tcp                            mysql

57616d4ea225   nginx:lnmp   "/usr/local/nginx/sb…"   17 minutes ago   Up 17 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx

验证MYSQL

[root@docker mysql]# docker exec -it mysql bash

[root@ebafbdc1c4dc bin]# systemctl status mysqld

mysqld.service - MySQL Server

   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)

   Active: activating (start) since Sun 2022-07-20 01:05:59 UTC; 42s ago

......

PHP

创建目录

mkdir /opt/php

cd /opt/php/

#传入php安装包php-7.1.10.tar.bz2

编写DOCKERFILE脚本

vim Dockerfile 

 

FROM centos:7

MAINTAINER this is php image <lnmp>

RUN yum install -y gd \

libjpeg libjpeg-devel \

libpng libpng-devel \

freetype freetype-devel \

libxml2 libxml2-devel \

zlib zlib-devel \

curl curl-devel \

openssl openssl-devel \

gcc gcc-c++ make pcre-devel;useradd -M -s /sbin/nologin nginx

ADD php-7.1.10.tar.bz2 /usr/local/src/

WORKDIR /usr/local/src/php-7.1.10

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-openssl \

--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/local/php/sbin:$PATH

ADD php.ini     /usr/local/php/lib/

ADD php-fpm.conf /usr/local/php/etc/

ADD www.conf /usr/local/php/etc/php-fpm.d/

EXPOSE 9000

CMD /usr/local/php/sbin/php-fpm -F

b13ad515862ce2983c0645ecc481800 

#939行,取消注释,修改

date.timezone = Asia/Shanghai

#1170行,修改

mysqli.default_socket = /usr/local/mysql/mysql.sock

[root@docker php]# egrep -v "^;" php.ini | egrep -v "^$"

[PHP]

engine = On

short_open_tag = Off

precision = 14

output_buffering = 4096

zlib.output_compression = Off

implicit_flush = Off

unserialize_callback_func =

serialize_precision = -1

disable_functions =

disable_classes =

zend.enable_gc = On

expose_php = On

max_execution_time = 30

max_input_time = 60

memory_limit = 128M

error_reporting = E_ALL

display_errors = On

display_startup_errors = On

log_errors = On

log_errors_max_len = 1024

ignore_repeated_errors = Off

ignore_repeated_source = Off

report_memleaks = On

track_errors = On

html_errors = On

variables_order = "GPCS"

request_order = "GP"

register_argc_argv = Off

auto_globals_jit = On

post_max_size = 8M

auto_prepend_file =

auto_append_file =

default_mimetype = "text/html"

default_charset = "UTF-8"

doc_root =

user_dir =

enable_dl = Off

file_uploads = On

upload_max_filesize = 2M

max_file_uploads = 20

allow_url_fopen = On

allow_url_include = Off

default_socket_timeout = 60

[CLI Server]

cli_server.color = On

[Date]

date.timezone = Asia/Shanghai

[filter]

[iconv]

[intl]

[sqlite3]

[Pcre]

[Pdo]

[Pdo_mysql]

pdo_mysql.cache_size = 2000

pdo_mysql.default_socket=

[Phar]

[mail function]

SMTP = localhost

smtp_port = 25

mail.add_x_header = On

[SQL]

sql.safe_mode = Off

[ODBC]

odbc.allow_persistent = On

odbc.check_persistent = On

odbc.max_persistent = -1

odbc.max_links = -1

odbc.defaultlrl = 4096

odbc.defaultbinmode = 1

[Interbase]

ibase.allow_persistent = 1

ibase.max_persistent = -1

ibase.max_links = -1

ibase.timestampformat = "%Y-%m-%d %H:%M:%S"

ibase.dateformat = "%Y-%m-%d"

ibase.timeformat = "%H:%M:%S"

[MySQLi]

mysqli.max_persistent = -1

mysqli.allow_persistent = On

mysqli.max_links = -1

mysqli.cache_size = 2000

mysqli.default_port = 3306

mysqli.default_socket = /usr/local/mysql/mysql.sock

mysqli.default_host =

mysqli.default_user =

mysqli.default_pw =

mysqli.reconnect = Off

[mysqlnd]

mysqlnd.collect_statistics = On

mysqlnd.collect_memory_statistics = On

[OCI8]

[PostgreSQL]

pgsql.allow_persistent = On

pgsql.auto_reset_persistent = Off

pgsql.max_persistent = -1

pgsql.max_links = -1

pgsql.ignore_notice = 0

pgsql.log_notice = 0

[bcmath]

bcmath.scale = 0

[browscap]

[Session]

session.save_handler = files

session.use_strict_mode = 0

session.use_cookies = 1

session.use_only_cookies = 1

session.name = PHPSESSID

session.auto_start = 0

session.cookie_lifetime = 0

session.cookie_path = /

session.cookie_domain =

session.cookie_httponly =

session.serialize_handler = php

session.gc_probability = 1

session.gc_divisor = 1000

session.gc_maxlifetime = 1440

session.referer_check =

session.cache_limiter = nocache

session.cache_expire = 180

session.use_trans_sid = 0

session.sid_length = 26

session.trans_sid_tags = "a=href,area=href,frame=src,form="

session.sid_bits_per_character = 5

[Assertion]

zend.assertions = 1

[COM]

[mbstring]

[gd]

[exif]

[Tidy]

tidy.clean_output = Off

[soap]

soap.wsdl_cache_enabled=1

soap.wsdl_cache_dir="/tmp"

soap.wsdl_cache_ttl=86400

soap.wsdl_cache_limit = 5

[sysvshm]

[ldap]

ldap.max_links = -1

[mcrypt]

[dba]

[opcache]

[curl]

[openssl]

php-fpm.conf 

该配置文件位于 /usr/local/php/etc/php-fpm.conf.default

vim php-fpm.conf 

#17行,删除注释符号“;”

pid = run/php-fpm.pid

[root@docker php]# egrep -v "^;" php-fpm.conf | egrep -v "^$"

[global]

pid = run/php-fpm.pid

include=/usr/local/php/etc/php-fpm.d/*.conf

www.conf 

该配置文件位于 usr/local/php/etc/php-fpm.d/www.conf.default

vim www.conf 

#23、24行,修改用户和组

user = nginx

group = nginx

#36行,修改监听IP和端口为容器IP:9000端口

listen = 172.111.0.30:9000

[root@docker php]# egrep -v "^;" www.conf | egrep -v "^$"

[www]

user = nginx

group = nginx

listen = 172.111.0.30:9000

pm = dynamic

pm.max_children = 5

pm.start_servers = 2

pm.min_spare_servers = 1

pm.max_spare_servers = 3

生成镜像

docker build -t php:lnmp .

docker images

REPOSITORY   TAG       IMAGE ID       CREATED              SIZE

php          lnmp      985842f961f1   About a minute ago   1.2GB

mysql        lnmp      49da8f7299af   12 minutes ago       9.98GB

nginx        lnmp      35a6404fcfa1   26 minutes ago       522MB

centos       7         eeb6ee3f44bd   4 weeks ago          204MB

启动镜像容器

docker run -itd --name php --net mynetwork --ip 172.111.0.30 -p 9000:9000 --volumes-from nginx --volumes-from mysql php:lnmp

954d8ecdd6c7d47270fe15ce4ad6db9c4a5396f42f9d111315ecee69358a9566

docker ps -a

CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS                                       NAMES

954d8ecdd6c7   php:lnmp     "/bin/sh -c '/usr/lo…"   15 seconds ago   Up 14 seconds   0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   php

ebafbdc1c4dc   mysql:lnmp   "/usr/sbin/init"         8 minutes ago    Up 8 minutes    3306/tcp                                    mysql

57616d4ea225   nginx:lnmp   "/usr/local/nginx/sb…"   26 minutes ago   Up 26 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp           nginx

验证PHP

docker exec -it php bash

ps -aux

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root          1  0.0  0.0 113028  9536 pts/0    Ss+  06:00   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)

nginx         7  0.0  0.0 113028  5780 pts/0    S+   06:00   0:00 php-fpm: pool www

nginx         8  0.0  0.0 113028  5784 pts/0    S+   06:00   0:00 php-fpm: pool www

root          9  0.2  0.0  11828  1888 pts/1    Ss   06:01   0:00 bash

root         23  0.0  0.0  51732  1728 pts/1    R+   06:01   0:00 ps -aux

启动wordpress服务

进入MYSQL容器

mysql -u root -p

Enter password: 

#初始密码为空

mysql> create database wordpress;

Query OK, 1 row affected (0.00 sec)

 

mysql> grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';

Query OK, 0 rows affected, 1 warning (0.00 sec)

 

mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';

Query OK, 0 rows affected, 1 warning (0.00 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

浏览器访问测试

 http://192.168.111.80/wordpress/index.php

3d44e6eb59b55e236678c927e8493fd

posted @ 2023-02-10 14:25  withfear  阅读(21)  评论(0编辑  收藏  举报
----------------------------------- ©著作权归作者所有:来自51CTO博客作者一品堂_技术学习笔记的原创作品,请联系作者获取转载授权,否则将追究法律责任 博客园随笔中添加目录导航悬浮框博客园随笔中添加目录导航悬浮框 https://blog.51cto.com/ios9/3125785