1. 程式人生 > 其它 >Dockerfile運用(容器LNMP架構+wordpress)

Dockerfile運用(容器LNMP架構+wordpress)

環境準備

systemctl stop firewalld

setenforce 0

#建立自定義網路,方便自定義容器網段

docker network create --subnet=172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork

Nginx容器(容器ip和埠為172.18.0.10:80)

mkdir /opt/nginx
mkdir /opt/nginx/html                                 #建立首頁檔案目錄
cd /opt/nginx/

#上傳 nginx-1.12.0.tar.gz到/opt/nginx/目錄中
#上傳 wordpress-4.9.4-zh_CN.tar.gz到/opt/nginx目錄中
mkdir /opt/nginx/html tar zxvf wordpress-4.9.4-zh_CN.tar.gz -C /opt/nginx/html #另外的主機使用原始碼編譯安裝nginx將起conf目錄內所有檔案傳入到容器宿主機,方便掛載給nginx容器使用 vim Dockerfile FROM centos:7 MAINTAINER this is nginx image <dd>

RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make RUN 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 wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html/ RUN chmod 777 -R /usr/local/nginx/html/ EXPOSE 80 EXPOSE 443 CMD nginx -g "daemon off;" docker build -t nginx:lnmp . docker images docker run -d --name nginx -m 500m --memory-swap=1.5g -p 80:80 -v /opt/nginx/html:/usr/local/nginx/html -v /opt/nginx/conf/:/usr/local/nginx/conf/ --net mynetwork --ip 172.18.0.10 nginx:lnmp #掛載準備好的首頁資料夾和配置資料夾 #-m 500m --memory-swap=1.5g限制使用最大記憶體500m,交換空間為1G docker ps -a docker inspect 容器名 #可以檢視容器具體引數

Mysql容器(容器ip和埠為172.18.0.20:3306)

mkdir /opt/mysql
cd /opt/mysql
#上傳 mysql-boost-5.7.20.tar.gz到/opt/mysql目錄中
#提前在/opt/mysql目錄中準備好mysql的配置檔案my.cnf,直接複製到mysql容器中

FROM centos:7
MAINTAINER this is mysql image <dd>
RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin mysql
ADD mysql-boost-5.7.20.tar.gz /opt
RUN cd /opt/mysql-5.7.20/;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
RUN cd /opt/mysql-5.7.20/;make -j 4 && make install
ADD my.cnf /etc/my.cnf
EXPOSE 3306
RUN chown -R mysql:mysql /usr/local/mysql/
RUN chown mysql:mysql /etc/my.cnf
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
RUN /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
RUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
RUN systemctl enable mysqld
VOLUME [ "/usr/local/mysql" ]
CMD ["/usr/sbin/init"]

docker build -t mysql:lnmp . 
docker images
docker run --name=mysql -d --privileged --device-write-bps /dev/sda:10M -v /usr/local/mysql --net mynetwork --ip 172.18.0.20 mysql:lnmp
#限制往/dev/sda磁碟中寫的速度為10M/s
docker ps -a

php容器(容器ip和埠為172.18.0.30:9000)

mkdir /opt/php
cd /opt/php

#上傳 php-7.1.10.tar.bz2到 /opt/php 目錄中
#在另一臺主機上安裝php,在/opt/php 目錄中提前配置好三個檔案,直接複製給容器
php.ini            主配置檔案  
php-fpm.conf    程序服務配置檔案 
www.conf        擴充套件配置檔案(優化用的)

vim Dockerfile
FROM centos:7
MAINTAINER this is php image <dd>
RUN yum -y install 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
RUN 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 2 && 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

docker build -t php:dd .
docker images
docker run --name=php -d -p 9000:9000 --volumes-from mysql --volumes-from nginx --net mynetwork --ip 172.18.0.30 php:dd
docker ps -a

進入資料庫建立wordpress資料庫並授予遠端訪問的許可權

docker exec -it mysql /bin/bash

mysql
create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;
#web頁面進行訪問驗證
http://192.168.150.30/wordpress/index.php