格式

FROM

RUN 写的是系统镜像中的命令

COPY 复制本地资源到指定目录

EXPOSE 端口开放

创建ngxin dockerfile 练手

FROM centos:centos7
# 创建nginx的用户组,并创建好相应的data和conf
RUN mkdir /data && mkdir /conf && groupadd -r nginx && useradd -r -g nginx nginx# copy centos源 到docker
COPY ./epel-7.repo /etc/yum.repos.d/epel.repo# 安装Nginx所需要的依赖包
RUN yum update -y \&& yum clean all  \&& yum makecache  \&& yum -y install  gcc gcc-c++ autoconf automake make zlib zlib-devel net-tools openssl* pcre* wget \&& yum clean all  && rm -rf /var/cache/yum/*# 复制 Nginx tar 包 ( http://nginx.org/download 去预先下载到本地 当前目录)
COPY ./nginx-1.17.10.tar.gz  /data/nginx-1.17.10.tar.gzRUN cd /data \&& tar -zxvf nginx-1.17.10.tar.gz \&& cd nginx-1.17.10 \&& ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx \&& make && make install && rm -rf /data/nginx-1.17.10.tar.gz  && rm -rf /data/nginx-1.17.10COPY ./nginx.conf /conf# 全局使用nginx,软链接RUN ln -s /usr/local/nginx/sbin/* /usr/local/sbin#声明端口
EXPOSE 80#执行一条命令 nginx -c /conf/nginx.confENTRYPOINT ["/usr/local/nginx/sbin/nginx","-c","/conf/nginx.conf","-g","daemon off;"]

nginx.conf

user  root;
worker_processes  1;
events {worker_connections  1024;
}
http {default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';sendfile        on;keepalive_timeout  65;server {listen       80;access_log  /usr/local/nginx/logs/$host  main;location / {root  /www; #php容器的目录default_type text/html;}location  ~ \.php/?.*  {default_type text/html;#做php-fpm 配置,注意地址root           /www;  #php-fpm容器当中的路径,不是nginx容器路径fastcgi_index  index.php;#fastcgi_pass   192.168.1.10:9002; #本地IP+本地php容器暴露出来的端口fastcgi_pass   168.100.100.101:9000; #PHP容器IP+php端口#为php-fpm指定的根目录fastcgi_param  SCRIPT_FILENAME  $DOCUMENT_ROOT$fastcgi_script_name;#注意是容器当中的位置#定义变量 $path_info ,用于存放pathinfo信息set $path_info "";if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {#将文件地址赋值给变量 $real_script_nameset $real_script_name $1;#将文件地址后的参数赋值给变量 $path_infoset $path_info $2;}#配置fastcgi的一些参数fastcgi_param SCRIPT_NAME $real_script_name;fastcgi_param PATH_INFO $path_info;include        /usr/local/nginx/conf/fastcgi_params;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

上面命令复制到 DockerFile 文件中 然后执行

目录

docker built -f nginx

最后出现

Successfully built 4ae7e42f38a9
Successfully tagged my-nginx:latest

就行了

测试

docker run -itd --name my-nginx my-nginx

docker exec -it my-nginx bash 进入容器

docker stop my-nginx|xargs docker rm 停止并删除容器

跟本地82端口绑定

docker run -itd -p 82:80 --name my-nginx my-nginx

构建PHP镜像

FROM php:7.3-fpm-alpine# Version
ENV PHPREDIS_VERSION 4.0.0# Libs
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \&& apk  add  \curl \vim  \wget \git \openssl-dev\zip \unzip \g++  make autoconfRUN mv "$PHP_INI_DIR/php.ini-production"  "$PHP_INI_DIR/php.ini" \&& docker-php-ext-install pdo_mysql \&& docker-php-ext-install pcntl \&& docker-php-ext-install sysvmsg# Redis extension
RUN wget http://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz -O /tmp/redis.tar.tgz \&& pecl install /tmp/redis.tar.tgz \&& rm -rf /tmp/redis.tar.tgz \&& docker-php-ext-enable redis
# 修改php.ini的文件 extension=redis.soEXPOSE 9000
#设置工作目录
WORKDIR  /www

docker build -t my-php .

启动PHP

docker run -itd -p 9002:9000 --name my-php my-php

构建Redis

FROM centos:centos7
RUN groupadd -r redis && useradd -r -g redis redisRUN mkdir data ;\yum update -y ; \yum -y install gcc automake autoconf libtool make wget epel-release gcc-c++;COPY ./redis-5.0.7.tar.gz redis-5.0.7.tar.gz
RUN mkdir -p /usr/src/redis; \tar -zxvf redis-5.0.7.tar.gz -C /usr/src/redis; \rm -rf redis-5.0.7.tar.gz; \cd /usr/src/redis/redis-5.0.7 && make ; \cd /usr/src/redis/redis-5.0.7 && make installCOPY ./conf/redis.conf /usr/src/redis/redis-5.0.7/redis.confEXPOSE 6379ENTRYPOINT ["redis-server", "/usr/src/redis/redis-5.0.7/redis.conf"]

docker build -t my-redis .

启动Redis

docker run -itd -p 6380:6379 --name my-redis my-redis

删除所有容器命令

docker stop $(docker ps -a -q)|xargs docker rm

本地目录与容器目录共享 nginx容器为例

docker run -itd -v /Users/bob/workspace/服务/docker/nginx/conf:/conf -p 82:80 --name my-nginx my-nginx

之后在 对应的本地目录或者容器中对应的目录 新增删除文件 都会同步

进入 PHP容器

docker exec -it my-php sh

www 目录下创建个index.php

vi index.php

<?php
echo 'hello world';

本地访问 http://127.0.0.1:82/index.php

就能输出 hello world

dockerfile构建LNRP环境练手相关推荐

  1. Dockerfile 构建python环境

    Dockerfile 构建python环境 构建步骤 编写一个dockerfile文件 通过docker build构建文件的一个镜像 docker run 运行镜像 具体步骤 首先,创建目录 pyt ...

  2. 学习笔记五:dockerfile 构建生产环境镜像

    dockerfile 构建生产环境镜像 dockerfile构建nginx镜像 dockerfile构建tomcat镜像 tomcat 的自动启动 把Go代码基于dockerfile做成镜像 把pyt ...

  3. [RL] 使用 dockerfile 构建 atari 环境

    强化学习需要 atari 环境,使用 dockerfile 快速构建. 下载 ROMS wget http://www.atarimania.com/roms/Roms.rar unrar -e Ro ...

  4. 使用 dockerfile 构建 WordPress 环境

    1.配置docker-compose.yml文件 version: '3.3' services:    db:      image: mysql:5.7      volumes:         ...

  5. 使用Dockerfile定制LNMP环境镜像

    使用Dockerfile定制LNMP环境镜像    LNMP是继LAMP之后的又一个非常流行的web框架,即Linux+Nginx+Mysql+PHP的网站架构方案.nginx相较于apache更轻量 ...

  6. 树莓派练手小项目---基于树莓派构建天气查询系统,实现内容的网页自动化检索功能

    目录 一.写在前面 二.基于树莓派构建天气查询系统 三.基于树莓派实现网页内容的自动化检索 四.有关于树莓派的其他小提醒,小技巧 Author:qyan.li Date:2022.6.19 Topic ...

  7. 一个适合于Python 初学者的入门练手项目

    随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...

  8. python新手项目-推荐:一个适合于Python新手的入门练手项目

    原标题:推荐:一个适合于Python新手的入门练手项目 随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人 ...

  9. python新手小项目-推荐:一个适合于Python新手的入门练手项目

    随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...

最新文章

  1. java 类参数_Java的数据类型和参数传递(详解)
  2. PHP设置二维码中间为logo
  3. Linux Device和Driver注册过程,以及Probe的时机
  4. 【LeetCode笔记】121. 买卖股票的最佳时机 / 剑指 Offer 63. 股票的最大利润(Java、动态规划)
  5. FileZilla 下载安装使用
  6. 论文阅读之ALBERT
  7. Oracle时间函数(转)
  8. java代码求IP和mac地址
  9. proteus三输入与非门名字_proteus元件名称对照表
  10. 07-0.部署 worker 节点
  11. 各种OS的TCP Init RTO
  12. ASCII码常用范围
  13. 电动汽车V2G及直流母线在新能源微电网中的应用
  14. 如何让html 兼容IE和chrome,chrome兼容模式如何切换成IE兼容模式_chrome兼容模式切换成IE兼容模式的方法-系统城...
  15. 设置Windows10系统下电脑屏幕自动关闭的时间(只关闭屏幕,电脑主机不关机)
  16. 手机浏览器点击input放大问题
  17. MACOS 打开 Pycharm2020 闪退解决方法
  18. java测试类写三角形_软件测试实验一——使用junit判断三角形
  19. .h文件和.cpp文件组织结构
  20. [费用流] LOJ#545. 「LibreOJ β Round #7」小埋与游乐场

热门文章

  1. 形式化方法(Formal Methods)
  2. 菜鸟学习OGRE和天龙八部之一:OGRE+MFC+OIS
  3. 人生若只如初见 z-x-l [我的故事和写过的诗]
  4. SQL快速入门、查询(SqlServer)[郝斌SqlServer完整版]
  5. linux 重启nginx命令
  6. java怎么把背景设成纯透明,怎么把BufferedImage设置背景为透明
  7. 码农+码农=码农 ?
  8. bugku md5加密相等绕过
  9. userdel删除用户时候提示:userdel: user xx is currently logged in
  10. ElasticSearch 亿级数据检索深度优化