内容简介:<!-- TOC --><!-- /TOC -->有收获的话请
<!-- TOC -->
-
- 一、Dockerfile定制镜像
-
三、docker-compose编排lnmp环境
<!-- /TOC -->
有收获的话请 加颗小星星 ,没有收获的话可以 反对 没有帮助 举报 三连
一、Dockerfile定制镜像
# FROM 指定基础镜像 FROM 镜像 FROM php:7.2-fpm # RUN 执行 RUN <命令> or RUN ["可执行文件", "参数1", "参数2"] RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html RUN ["php", "-S", "0.0.0.0:8080"] # COPY 复制文件 COPY <源路径>... <目标路径> COPY swoole-4.2.10.tgz /home COPY nginx.conf /etc/nginx/nginx.conf # ADD 复制文件或目录,如果是.tgz,会被解压缩 ADD <源路径>... <目标路径> ADD nginx.conf /etc/nginx/nginx.conf # CMD 容器启动 CMD echo $HOME => CMD [ "/bin/sh", "-c", "echo $HOME" ] CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ] # ENTRYPOINT 入口点 ENTRYPOINT ["docker-entrypoint.sh"] 存在 ENTRYPOINT 后,CMD 的内容将会作为参数传给 ENTRYPOINT # ENV 环境变量 ENV <key> <value> ENV MYSQL_ROOT_PASSWORD root # ARG与ENV差不多 ARG 所设置的构建环境的环境变量,在将来容器运行时是不会存在这些环境变量的 ENV MYSQL_ROOT_PASSWORD root # VOLUME 匿名卷 VOLUME ["<路径1>", "<路径2>"...] VOLUME ["/data"] # EXPOSE 暴露端口 EXPOSE <端口1> [<端口2>...] EXPOSE 80 443 # WOEKDIR 指定工作目录,进入容器后的落地目录 WORKDIR <工作目录路径> WORKDIR /var/www # USER 指定当前用户 USER <用户名> USER root
二、docker-compose
详细请查看 https://docker_practice.gitee...
- 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
- 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
三、docker-compose编排lnmp环境
1、mysql
这里我们使用了 mysql 5.5版本,没其它用意,相比5.7以上版本,占内存和硬盘最小的一个版本
我们准备了一个 my.cnf
作为额外配置,这里我修改了数据库的时区
[mysqld] default-time-zone = '+8:00'
FROM mysql:5.5 COPY my.cnf /etc/mysql/conf.d EXPOSE 3306
2、redis
我们使用准备的配置文件 redis.conf
覆盖容器默认启动的配置文件,修改了 ip绑定
和 密码
bind 0.0.0.0 requirepass root
FROM redis:latest COPY redis.conf /usr/local/etc/redis/redis.conf CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ] EXPOSE 6379
3、mongo
mongodb我们没有特殊处理
FROM mongo:latest EXPOSE 27017
4、nginx
我们准备了一份 nginx.conf
和虚拟目录 conf.d
,为了以后可以动态的配置网站的代理和负载均衡
还有一个日志目录,放在外层 logs
目录里面,记录nginx的访问日志
特别注意的是 fastcgi_pass php:9000;
而不是 fastcgi_pass 127.0.0.1:9000;
,目前自己也没明白
FROM nginx:alpine COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80
5、php
php算是这里面最难搞定的,因为我们需要额外的添加 php 扩展,虽然php的 docker 官方提供了 docker-php-ext-configure
, docker-php-ext-install
, docker-php-ext-enable
,还是有些扩展需要通过 手动编译
或者 pecl
安装
由于pecl官网下载慢,我们事先下载好了几个需要的扩展
php-fpm用的是debian的 linux 系统,下载也很慢,我们备用了阿里云的镜像 sources.list
我们还准备了php的默认配置 php.ini
和 opcache.ini
比如swoole扩展安装,记得安装包用完后清理,还有得用 COPY
命令, ADD
会解压缩
# swoole COPY swoole-4.2.10.tgz /home RUN pecl install /home/swoole-4.2.10.tgz && \ docker-php-ext-enable swoole && \ rm /home/swoole-4.2.10.tgz
6、完整版
version: '3' networks: frontend: driver: bridge backend: driver: bridge volumes: mysql: driver: local mongo: driver: local redis: driver: local services: php: build: ./php volumes: - ${WORKER_DIR}:/var/www ports: - 9100:9000 depends_on: - mysql - redis - mongo networks: - backend nginx: build: ./nginx volumes: - ${WORKER_DIR}:/var/www - ./logs/nginx:/var/log/nginx - ./nginx/conf.d:/etc/nginx/conf.d ports: - 8000:80 depends_on: - php networks: - frontend - backend mysql: build: ./mysql environment: - MYSQL_ROOT_PASSWORD=root volumes: - ${DATA_PATH}/mysql:/var/lib/mysql ports: - 3310:3306 networks: - backend mongo: build: ./mongo environment: - MONGO_INITDB_ROOT_USERNAME=root - MONGO_INITDB_ROOT_PASSWORD=root ports: - 27010:27017 volumes: - ${DATA_PATH}/mongo:/data/db networks: - backend redis: build: ./redis volumes: - ${DATA_PATH}/redis:/data ports: - 6310:6379 networks: - backend
四、参考
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Hyperledger Fabric环境搭建及环境测试(Mac环境)
- CV 环境很重要,各种环境搭建大全
- Openstack Queens 环境搭建(一)环境准备
- Python 环境搭建
- 1 - 搭建开发环境
- 搭建 Android 内核环境
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Cascading Style Sheets 2.0 Programmer's Reference
Eric A. Meyer / McGraw-Hill Osborne Media / 2001-03-20 / USD 19.99
The most authoritative quick reference available for CSS programmers. This handy resource gives you programming essentials at your fingertips, including all the new tags and features in CSS 2.0. You'l......一起来看看 《Cascading Style Sheets 2.0 Programmer's Reference》 这本书的介绍吧!