3、准备 my.cnf 文件
[root@docker mysql]# 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
4、生成镜像
[root@docker mysql]# docker build -t mysql:lnmp . [root@docker mysql]# 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
5、启动镜像容器
[root@benet23 mysql]# docker run --name=mysql -d --privileged --device-write-bps /dev/sda:10M -v /usr/local/mysql --net mynetwork --ip 172.20.0.20 mysql:lnmp e75631cda20bf2b2da5537699b006e446abba355f39ef39b2c8d2d98582f5bea [root@benet23 mysql]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e75631cda20b mysql:lnmp "/usr/sbin/init" 44 seconds ago Up 35 seconds 3306/tcp mysql 24cbedd7982b nginx:lnmp "/usr/local/nginx/sb…" 6 days ago Up 6 days 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
6、验证 mysql
[root@benet23 mysql]# docker exec -it mysql bash [root@e75631cda20b 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 2023-01-01 04:35:03 UTC; 1min 49s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 70 ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS) Process: 50 ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) CGroup: /docker/e75631cda20bf2b2da5537699b006e446abba355f39ef39b2c8d2d98582f5bea/system.slice/mysqld.service └─73 /usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/mysqld.pid
五、Php
1、建立工作目录
[root@benet23 mysql]# mkdir ../php [root@benet23 mysql]# cd ../php/ [root@benet23 php]# rz -E rz waiting to receive. #传入php安装包php-7.1.10.tar.bz2
2、编写 Dockerfile 脚本
[root@benet23 php]# 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
3、准备 php.ini、php-fpm.conf、www.conf 配置文件
3.1 php.ini
该配置文件模板位于安装目录的 php-7.1.10/php.ini-development 位置
[root@benet23 php]# vim php.ini #939行,取消注释,修改 date.timezone = Asia/Shanghai #1170行,修改 mysqli.default_socket = /usr/local/mysql/mysql.sock [root@benet23 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]
3.2 php-fpm.conf
该配置文件位于 /usr/local/php/etc/php-fpm.conf.default
[root@docker php]# 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
3.3 www.conf
该配置文件位于 usr/local/php/etc/php-fpm.d/www.conf.default
[root@docker php]# vim www.conf #23、24行,修改用户和组 user = nginx group = nginx #36行,修改监听IP和端口为容器IP:9000端口 listen = 172.20.0.30:9000 [root@docker php]# egrep -v "^;" www.conf | egrep -v "^$" [www] user = nginx group = nginx listen = 172.20.0.30:9000 pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3
4、生成镜像
[root@benet23 php]# docker build -t php:lnmp . [root@benet23 php]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE php lnmp 18366080e46c About a minute ago 1.3GB mysql lnmp d007959d6f9a 10 hours ago 10GB nginx lnmp 8c0cf60ecad6 7 days ago 573MB httpd centos e961c69e1bef 7 days ago 761MB nginx latest 3964ce7b8458 2 weeks ago 142MB centos 7 eeb6ee3f44bd 15 months ago 204MB
5、启动镜像容器
[root@benet23 php]# docker run -itd --name php --net mynetwork --ip 172.20.0.30 -p 9000:9000 --volumes-from nginx --volumes-from mysql php:lnmp 03e251af5164d3e7392af541f0f2964badbd653db15e7be5d38caabb210c367d [root@benet23 php]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 03e251af5164 php:lnmp "/bin/sh -c '/usr/lo…" 7 seconds ago Up 5 seconds 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp php e75631cda20b mysql:lnmp "/usr/sbin/init" 10 hours ago Up 10 hours 3306/tcp mysql 24cbedd7982b nginx:lnmp "/usr/local/nginx/sb…" 7 days ago Up 7 days 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
6、验证 php
[root@benet23 php]# docker exec -it php bash [root@03e251af5164 php-7.1.10]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 113028 7512 pts/0 Ss+ 14:25 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) nginx 7 0.0 0.0 113028 3552 pts/0 S+ 14:25 0:00 php-fpm: pool www nginx 8 0.0 0.0 113028 3552 pts/0 S+ 14:25 0:00 php-fpm: pool www root 9 0.2 0.0 11828 1908 pts/1 Ss 14:27 0:00 bash root 22 0.0 0.0 51732 1728 pts/1 R+ 14:28 0:00 ps -aux
六、启动 wordpress 服务
1、mysql 授权
进入 mysql 容器
[root@e75631cda20b bin]# 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)
2、浏览器访问测试
访问 http://192.168.147.105/wordpress/index.php