摘要:項目由一組關聯的應用容器組成的一個完整業(yè)務單元,在文件中定義。
docker搭建lnmp環(huán)境
一、Dockerfile定制鏡像
二、docker-compose
三、docker-compose編排lnmp環(huán)境
1、mysql
2、redis
3、mongo
4、nginx
5、php
6、完整版
四、參考
有收獲的話請加顆小星星,沒有收獲的話可以 反對 沒有幫助 舉報三連
代碼倉庫
docker搭建lnmp環(huán)境
一、Dockerfile定制鏡像# FROM 指定基礎鏡像 FROM 鏡像 FROM php:7.2-fpm # RUN 執(zhí)行 RUN <命令> or RUN ["可執(zhí)行文件", "參數1", "參數2"] RUN echo "二、docker-composeHello, Docker!
" > /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 環(huán)境變量 ENVENV MYSQL_ROOT_PASSWORD root # ARG與ENV差不多 ARG 所設置的構建環(huán)境的環(huán)境變量,在將來容器運行時是不會存在這些環(huán)境變量的 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
詳細請查看 https://docker_practice.gitee...
服務 (service):一個應用的容器,實際上可以包括若干運行相同鏡像的容器實例。
項目 (project):由一組關聯的應用容器組成的一個完整業(yè)務單元,在 docker-compose.yml 文件中定義。
三、docker-compose編排lnmp環(huán)境 1、mysql這里我們使用了mysql5.5版本,沒其它用意,相比5.7以上版本,占內存和硬盤最小的一個版本
我們準備了一個my.cnf作為額外配置,這里我修改了數據庫的時區(qū)
[mysqld] default-time-zone = "+8:00"
FROM mysql:5.5 COPY my.cnf /etc/mysql/conf.d EXPOSE 33062、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 63793、mongo
mongodb我們沒有特殊處理
FROM mongo:latest EXPOSE 270174、nginx
我們準備了一份nginx.conf和虛擬目錄conf.d,為了以后可以動態(tài)的配置網站的代理和負載均衡
還有一個日志目錄,放在外層logs目錄里面,記錄nginx的訪問日志
特別注意的是fastcgi_pass php:9000;而不是fastcgi_pass 127.0.0.1:9000;,目前自己也沒明白
FROM nginx:alpine COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 805、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.tgz6、完整版
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四、參考
Docker — 從入門到實踐
laradock
Docker在PHP項目開發(fā)環(huán)境中的應用
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28052.html
摘要:如果不用我們可能將上述講的命令每搭建一次就需要執(zhí)行一遍,有沒有能統一管理的有,就是在環(huán)境搭建中的作用快速創(chuàng)建鏡像,快速創(chuàng)建并運行容器,實現統一管理。 前言 初學者在dcoker學習過程中,可能不太清楚docker中那么多的命令,參數,工具在lnmp環(huán)境搭建中起了什么作用,下面跟著我來熟悉一下。(本文面向的是不怎么熟悉linux的:phper) 鏡像,容器,倉庫 鏡像:Docker 鏡像...
摘要:學習心得前言耗時一周零三天,終于用搭建起自己的開發(fā)環(huán)境。來搭建一下環(huán)境,然后,桌面沒了。作為過來人,我只想說,一定要只做一件事,不要過多的去研究,我們只是想搭建本地運行環(huán)境。 docker學習心得 前言 耗時一周零三天,終于用docker搭建起自己的開發(fā)環(huán)境。詳細過程:請參考分解docker在lnmp環(huán)境搭建中的作用showImg(https://segmentfault.com/im...
摘要:基礎命令關于搜索下載查看或者刪除單個刪除多個刪除查看信息占用關于查看重啟停止雜項命令網絡相關清除網絡緩存查看網絡列表查看詳情掛載目錄清除緩存查看列表查看詳情系統相關系統信息查看占用清除所有包含構建失敗的鏡像沒有被使用的網絡配 docker基礎命令 關于images 搜索 docker search php 下載 docker pull php:7.3.6-fpm-alpine3....
摘要:基礎命令關于搜索下載查看或者刪除單個刪除多個刪除查看信息占用關于查看重啟停止雜項命令網絡相關清除網絡緩存查看網絡列表查看詳情掛載目錄清除緩存查看列表查看詳情系統相關系統信息查看占用清除所有包含構建失敗的鏡像沒有被使用的網絡配 docker基礎命令 關于images 搜索 docker search php 下載 docker pull php:7.3.6-fpm-alpine3....
摘要:配置文件配置配置文件配置文件配置文件太大就不貼了,直接下載然后本地修改吧。不會使用的使用命令進行替換。是一種推出的免費的公共鏡像庫服務。本地對鏡像打提交鏡像到倉庫參考Docker 安裝安裝 Dockercurl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun配置國內鏡像mkdir -p /etc/docker cat...
閱讀 798·2021-11-11 16:54
閱讀 1536·2021-08-24 10:01
閱讀 1923·2019-08-30 15:54
閱讀 3305·2019-08-29 14:02
閱讀 3141·2019-08-28 18:22
閱讀 2257·2019-08-28 18:09
閱讀 3716·2019-08-26 10:26
閱讀 2675·2019-08-23 18:23