日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

發(fā)布時(shí)間:2025/3/20 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在編輯Dockerfile過(guò)程中參考了以下相關(guān)范例:https://hub.docker.com/_/php/、https://hub.docker.com/_/mysql/、https://hub.docker.com/_/nginx/。在build鏡像時(shí)可能報(bào)出異常“containerd: container not started”,此時(shí)可能需要重啟containerd或系統(tǒng)。

要?jiǎng)h除某些無(wú)用的images,可執(zhí)行如下命令:

sudo docker rmi $(sudo docker images -a|grep none|awk '{print $3 }')

?

?

?

一.安裝Docker

sudo apt-get update sudo apt-get install docker.io

??

二.在Home下創(chuàng)建如下docker目錄(含源碼安裝包)

conf:配置文件目錄,包含nginx.conf、php.ini、 my.cnf以及source.list等。當(dāng)然這些配置文件并非必須的,可在相關(guān)的安裝目錄下去復(fù)制修改源配置文件,只是個(gè)人喜歡先準(zhǔn)備好這些將要用到的文件。

packages:安裝包目錄,對(duì)于mysql的安裝本人采用mariadb源碼安裝,所有的安裝包都是官方下載的最新版。至于phpMyAdmin包是本人在開(kāi)發(fā)測(cè)試時(shí)喜歡使用的mysql管理界面(客戶端),如果最后phpMyAdmin能在容器中跑起來(lái),也就初步說(shuō)明整個(gè)創(chuàng)建過(guò)程是成功的。

Dockerfile-PHP-FPM:為構(gòu)建php鏡像而要編寫(xiě)的Dockerfile

Dockerfile-Mariadb:為構(gòu)建mariadb鏡像而要編寫(xiě)的Dockerfile

Dockerfile-Nginx:為構(gòu)建nginx鏡像而要編寫(xiě)的Dockerfile

?

三.構(gòu)建mariadb鏡像并運(yùn)行mariadb容器

1.編輯Dockerfile-Mariadb

FROM ubuntu MAINTAINER cenze <272666745@qq.com>RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && groupadd -r mysql \ && useradd -r -g mysql mysql ADD conf/sources.list /etc/apt/ RUN apt-get update \ && apt-get install -y g++ cmake vim libncurses5-dev zlib1g-devENV PKGS="/usr/local/pkgs" ADD packages/mariadb-10.1.19.tar.gz $PKGS/# install mariadb WORKDIR $PKGS/mariadb-10.1.19 ENV PREFIX_MARIADB="/usr/local/mariadb" RUN mkdir $PREFIX_MARIADB \ && cmake -DCMAKE_INSTALL_PREFIX="$PREFIX_MARIADB" . \ && make \ && make installENV PATH $PREFIX_MARIADB/bin:$PATH ADD conf/my.cnf /etc/ RUN chown -R mysql:mysql $PREFIX_MARIADB/data \ && cd $PREFIX_MARIADB \ && ./scripts/mysql_install_dbEXPOSE 3306 CMD ["mysqld"]

2.構(gòu)建mariadb鏡像

cd ~/docker sudo docker build -t cenze/mariadb -f Dockerfile-Mariadb .

3.運(yùn)行mariadb容器

sudo docker run -d --name mariadb --privileged=true cenze/mariadb

特別說(shuō)明:此時(shí)的MySQL實(shí)例只能以 root 從本地訪問(wèn),可手動(dòng)配置root密碼以及訪問(wèn)權(quán)限等。--privileged=true?container內(nèi)的root擁有真正的root權(quán)限,容器會(huì)被允許直接配置主機(jī)的網(wǎng)絡(luò)堆棧;否則,container內(nèi)的root只是外部的一個(gè)普通用戶權(quán)限。
?

四.構(gòu)建php鏡像并運(yùn)行php-fpm容器

1.編輯Dockerfile-PHP-FPM

FROM ubuntu MAINTAINER cenze <272666745@qq.com>RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ADD conf/sources.list /etc/apt/ RUN apt-get update \ && apt-get install -y gcc make vim autoconf libssl-dev libpcre3-dev zlib1g-dev libxml2-dev libcurl4-gnutls-dev libpng16-dev libmcrypt-dev \ && ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/ENV PKGS="/usr/local/pkgs" ADD packages/php-7.1.0.tar.gz $PKGS/#install php WORKDIR $PKGS/php-7.1.0 ENV PREFIX_PHP="/usr/local/php" RUN mkdir $PREFIX_PHP \ && CONFIG_PHP="\ --prefix=$PREFIX_PHP \ #默認(rèn)為$PREFIX_PHP/lib,php-fpm啟動(dòng)時(shí)將在會(huì)自行搜索--sysconfdir[=$PREFIX_PHP/etc]指定目錄下的php.ini,
#但php以cli模式獨(dú)立運(yùn)行時(shí)只會(huì)在--with-config-file-path[=$PREFIX_PHP/lib]指定目錄下搜索php.ini --with-config-file-path=$PREFIX_PHP/etc \ --disable-cgi \ --enable-fpm \ --with-fpm-user=www-data \ --with-fpm-group=www-data \ --enable-mbstring \ --with-mysqli \ --with-pdo-mysql \ --with-mcrypt \ --with-zlib \ --with-curl \ --with-openssl \
--with-jpeg-dir=/usr/lib/x86_64-linux-gnu \
--with-png-dir=/usr/lib/x86_64-linux-gnu \ --with-gd \
--enable-exif \
--enable-bcmath \ #如果沒(méi)有自帶libbcmath,就sudo apt-get install php-bcmath "\ && ./configure $CONFIG_PHP \ && make \ && make install ADD conf/php-fpm.conf $PREFIX_PHP/etc/ ADD conf/php.ini $PREFIX_PHP/etc/ ADD conf/www.conf $PREFIX_PHP/etc/php-fpm.d/ ADD conf/php-fpm $PREFIX_PHP/bin/
RUN mkdir /var/www \
&& chown -R www-data:www-data /var/www ###################Chroot######################################################### #如果不想chroot,這部分可以刪除 #chroot的配置是一個(gè)大坑,如果你使用到session、sendmail、DNS解析等有關(guān)api,可能需要添加復(fù)制相應(yīng)的目錄和庫(kù)文件 #以下只是本人會(huì)涉及到的,很少一部分 RUN chown -R root:root /var/www \
&& cd /var/www \ && mkdir -p lib public dev etc tmp usr/share/zoneinfo var/log \ && cp -a /dev/zero /dev/random /dev/urandom /dev/null dev/ \ && chmod --reference=/tmp tmp/ \ && chown -R www-data:www-data public var/log \ && cp /lib/x86_64-linux-gnu/libc.so.6 \ /lib/x86_64-linux-gnu/libdl.so.2 \ /lib/x86_64-linux-gnu/libnss_dns.so.2 \ /lib/x86_64-linux-gnu/libnss_files.so.2 \ /lib/x86_64-linux-gnu/libresolv.so.2 \ lib/ ###################Chroot End######################################################ENV PATH $PREFIX_PHP/bin:$PATH

#install extensions & tools for PHP
RUN pecl install redis \
&& php -r "readfile('https://getcomposer.org/installer');" | php \
&& mv composer.phar /usr/local/bin/composer

EXPOSE 9000 CMD ["php-fpm","start"]

2.構(gòu)建php-fpm鏡像

cd ~/docker sudo docker build -t cenze/php-fpm -f Dockerfile-PHP-FPM .

3.運(yùn)行php-fpm容器

sudo docker run -d --link mariadb -v /home/cenze/web:/var/www --name php-fpm --privileged=true cenze/php-fpm

特別說(shuō)明:php-fpm.conf中daemonize = no,否則php-fpm容器無(wú)法開(kāi)啟并運(yùn)行在后臺(tái);本人在主機(jī)~/web下掛載了卷,綁定到容器/var/www

?

五.構(gòu)建nginx鏡像并運(yùn)行nginx容器

1.編輯Dockerfile-Nginx

FROM ubuntu MAINTAINER cenze <272666745@qq.com>RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ADD conf/sources.list /etc/apt/ RUN apt-get update \ && apt-get install -y gcc make vim libpcre3-dev zlib1g-dev libssl-dev \ && ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/ENV PKGS="/usr/local/pkgs" ADD packages/nginx-1.10.2.tar.gz $PKGS/# install nginx WORKDIR $PKGS/nginx-1.10.2 ENV PREFIX_NGINX="/usr/local/nginx" RUN mkdir $PREFIX_NGINX \ && ./configure --prefix="$PREFIX_NGINX" --with-http_ssl_module \ && make \ && make install ADD conf/nginx.conf $PREFIX_NGINX/conf/#WORKDIR $PREFIX_NGINX/html ENV PATH $PREFIX_NGINX/sbin:$PATHEXPOSE 80 443 CMD ["nginx", "-g", "daemon off;"]

2.構(gòu)建nginx鏡像

cd ~/docker sudo docker build -t cenze/nginx -f Dockerfile-Nginx .

3.運(yùn)行nginx容器

sudo docker run -d -p 443:443 -p 80:80 --link php-fpm -v /home/cenze/web:/usr/local/nginx/html --name nginx --privileged=true cenze/nginx

特別說(shuō)明:本人在主機(jī)~/web下掛載了卷,綁定到nginx容器/usr/local/nginx/html

?

六.創(chuàng)建新項(xiàng)目進(jìn)行測(cè)試?

1)上圖是運(yùn)行php-fpm容器后主機(jī)~/web目錄結(jié)構(gòu)圖,提取~/docker/packages/phpMyAdmin.tar.gz至~/web/public下

2)復(fù)制phpMyAdmin配置文件

cd ~/web/phpMyAdmin
cp config.sample.inc.php config.inc.php

?特別說(shuō)明:$cfg['Servers'][$i]['host']?=?'your-real-ip';

?

3)訪問(wèn)地址http://localhost/phpMyAdmin將出現(xiàn)下圖,說(shuō)明基于容器的nginx+php+mariadb服務(wù)環(huán)境已經(jīng)創(chuàng)建成功

轉(zhuǎn)載于:https://www.cnblogs.com/XiongMaoMengNan/p/6256799.html

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。