dockerfile构建LNRP环境练手
格式
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环境练手相关推荐
- Dockerfile 构建python环境
Dockerfile 构建python环境 构建步骤 编写一个dockerfile文件 通过docker build构建文件的一个镜像 docker run 运行镜像 具体步骤 首先,创建目录 pyt ...
- 学习笔记五:dockerfile 构建生产环境镜像
dockerfile 构建生产环境镜像 dockerfile构建nginx镜像 dockerfile构建tomcat镜像 tomcat 的自动启动 把Go代码基于dockerfile做成镜像 把pyt ...
- [RL] 使用 dockerfile 构建 atari 环境
强化学习需要 atari 环境,使用 dockerfile 快速构建. 下载 ROMS wget http://www.atarimania.com/roms/Roms.rar unrar -e Ro ...
- 使用 dockerfile 构建 WordPress 环境
1.配置docker-compose.yml文件 version: '3.3' services: db: image: mysql:5.7 volumes: ...
- 使用Dockerfile定制LNMP环境镜像
使用Dockerfile定制LNMP环境镜像 LNMP是继LAMP之后的又一个非常流行的web框架,即Linux+Nginx+Mysql+PHP的网站架构方案.nginx相较于apache更轻量 ...
- 树莓派练手小项目---基于树莓派构建天气查询系统,实现内容的网页自动化检索功能
目录 一.写在前面 二.基于树莓派构建天气查询系统 三.基于树莓派实现网页内容的自动化检索 四.有关于树莓派的其他小提醒,小技巧 Author:qyan.li Date:2022.6.19 Topic ...
- 一个适合于Python 初学者的入门练手项目
随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...
- python新手项目-推荐:一个适合于Python新手的入门练手项目
原标题:推荐:一个适合于Python新手的入门练手项目 随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人 ...
- python新手小项目-推荐:一个适合于Python新手的入门练手项目
随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...
最新文章
- java 类参数_Java的数据类型和参数传递(详解)
- PHP设置二维码中间为logo
- Linux Device和Driver注册过程,以及Probe的时机
- 【LeetCode笔记】121. 买卖股票的最佳时机 / 剑指 Offer 63. 股票的最大利润(Java、动态规划)
- FileZilla 下载安装使用
- 论文阅读之ALBERT
- Oracle时间函数(转)
- java代码求IP和mac地址
- proteus三输入与非门名字_proteus元件名称对照表
- 07-0.部署 worker 节点
- 各种OS的TCP Init RTO
- ASCII码常用范围
- 电动汽车V2G及直流母线在新能源微电网中的应用
- 如何让html 兼容IE和chrome,chrome兼容模式如何切换成IE兼容模式_chrome兼容模式切换成IE兼容模式的方法-系统城...
- 设置Windows10系统下电脑屏幕自动关闭的时间(只关闭屏幕,电脑主机不关机)
- 手机浏览器点击input放大问题
- MACOS 打开 Pycharm2020 闪退解决方法
- java测试类写三角形_软件测试实验一——使用junit判断三角形
- .h文件和.cpp文件组织结构
- [费用流] LOJ#545. 「LibreOJ β Round #7」小埋与游乐场
热门文章
- 形式化方法(Formal Methods)
- 菜鸟学习OGRE和天龙八部之一:OGRE+MFC+OIS
- 人生若只如初见 z-x-l [我的故事和写过的诗]
- SQL快速入门、查询(SqlServer)[郝斌SqlServer完整版]
- linux 重启nginx命令
- java怎么把背景设成纯透明,怎么把BufferedImage设置背景为透明
- 码农+码农=码农 ?
- bugku md5加密相等绕过
- userdel删除用户时候提示:userdel: user xx is currently logged in
- ElasticSearch 亿级数据检索深度优化