基於docker 搭建 nginx+php+mysql+redis 的環境,可根據需求切換php版本


1,目錄結構

 

2,dockerfile文件創建,以nginx為例【命令集,從無到有的構建鏡像】 

FROM centos:latest         ------基於centos系統鏡像
MAINTAINER weeds <weedsyl@163.com> 
ENV TZ "Asia/Shanghai"
# 安裝依賴
RUN yum -y update && \    ——— RUN命令是Dockerfile執行命令的核心部分。它接受命令作為參數並用於創建鏡像
    yum install -y gcc automake autoconf libtool make gcc-c++ vixie-cron  wget zlib  file openssl-devel sharutils zip  bash vim cyrus-sasl-devel libmemcached libmemcached-devel libyaml libyaml-devel unzip libvpx-devel openssl-devel ImageMagick-devel  autoconf  tar gcc libxml2-devel gd-devel libmcrypt-devel libmcrypt mcrypt mhash libmcrypt libmcrypt-devel libxml2 libxml2-devel bzip2 bzip2-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype-devel bison libtool-ltdl-devel net-tools && \
  yum clean all
# 安裝 nginx
RUN cd /tmp && \
    wget http://nginx.org/download/nginx-1.14.0.tar.gz && \
    tar xzf nginx-1.14.0.tar.gz && \
    cd /tmp/nginx-1.14.0 && \
    ./configure \
    --prefix=/usr/local/nginx \
    --with-http_ssl_module --with-http_sub_module --with-http_dav_module --with-http_flv_module \
    --with-http_gzip_static_module --with-http_stub_status_module --with-debug && \
    make && \
    make install
EXPOSE 80 443    ---- 對外開放端口 
#啟動nginx
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;”]     ----和RUN命令相似,CMD可以用於執行特定的命令。和RUN不同的是,這些命令不是在鏡像構建的過程中執行的,而是在用鏡像構建容器后被調用

3,docker-compose.yml 文件 以nginx為例 【compose 文件是一個定義服務、 網絡和卷的 YAML 文件 。Compose 文件的默認路徑是 ./docker-compose.yml】 

version : ‘2.1’       ——版本
services :            ---服務
  nginx :             ---名稱
    build :
      context : ./nginx                 ---指定Dockerfile 的文件路徑
      dockerfile : dockerfile            ----使用此 dockerfile 文件來構建,必須指定構建路徑
    ports :                               ——映射端口
    - "${NGINX_HOST_HTTP_PORT}:80”        — 讀取.env 文件的NGINX_HOST_HTTP_PORT值,把docker的80端口映射到主機的.env配置端口
    - "${NGINX_HOST_HTTPS_PORT}:443"
    volumes :                          —--------掛載目錄 主機目錄:docker容器目錄
    - ./nginx/logs:/usr/local/nginx/logs
    - ${WORKPLACE}:/usr/local/nginx/html
    - ./nginx/conf/nginx.conf:/usr/local/nginx/conf/nginx.conf:ro
    - ./nginx/conf/vhost:/usr/local/nginx/conf/vhost:ro
    container_name : nginx            ------容器名稱
    external_links :                    -----鏈接到外部容器
    - php
    restart : always                    ——隨docker啟動而啟用 no
  php :
    build :
      context : ./php
      dockerfile : dockerfile
      args:
        - WEEDS_PHP_VERSION=${PHP_VERSION}
    ports :
    - "9000:9000"
    volumes :
    - ${WORKPLACE}:/usr/local/nginx/html
    - ./php/conf/php${PHP_VERSION}.ini:/usr/local/php/lib/php.ini:ro
    container_name : php
    external_links :
    - mysql
    restart : always

4, .env配置

### NGINX #################################################
NGINX_HOST_HTTP_PORT=80 
NGINX_HOST_HTTPS_PORT=443

5,啟動目錄

sudo docker-compose up -d nginx

6,成功后

docker ps 查看運行中的容器
docker ps -a 查看運行中的容器,包括未運行的
docker images 列出本地鏡像
docker kill 「容器id」 殺掉一個運行中的容器或者多個,空格隔開
docker rm 「容器id」 刪除一個或多少容器
dokcer rmi 「鏡像id」 刪除鏡像,釋放空間
docker-compose restart/start/stop 「容器名稱」 重啟/啟動/停止

7,其他

GitHub地址:https://github.com/weedsks/docker
docker官網:https://docs.docker.com/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM