docker搭建lnmp環境

2021-09-12 23:49:05 字數 4293 閱讀 7504

四、參考

有收穫的話請加顆小星星,沒有收穫的話可以反對沒有幫助舉報三連

# from 指定基礎映象

from 映象

from php:7.2-fpm

# run 執行

run 《命令》

orrun ["可執行檔案", "引數1", "引數2"]

run echo '' > /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 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

詳細請檢視 https://docker_practice.gitee...

這裡我們使用了mysql5.5版本,沒其它用意,相比5.7以上版本,佔記憶體和硬碟最小的乙個版本

我們準備了乙個my.cnf作為額外配置,這裡我修改了資料庫的時區

[mysqld]

default-time-zone = '+8:00'

from mysql:5.5

copy my.cnf /etc/mysql/conf.d

expose 3306

我們使用準備的配置檔案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

mongodb我們沒有特殊處理

from mongo:latest

expose 27017

我們準備了乙份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

php算是這裡面最難搞定的,因為我們需要額外的新增php擴充套件,雖然php的docker官方提供了docker-php-ext-configure,docker-php-ext-install,docker-php-ext-enable,還是有些擴充套件需要通過手動編譯或者pecl安裝

我們還準備了php的預設配置php.iniopcache.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

version: '3'

networks:

frontend:

driver: bridge

backend:

driver: bridge

volumes:

mysql:

driver: local

mongo:

driver: local

redis:

driver: local

services:

php:

build: ./php

volumes:

- $:/var/www

ports:

- 9100:9000

depends_on:

- mysql

- redis

- mongo

networks:

- backend

nginx:

build: ./nginx

volumes:

- $:/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:

- $/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:

- $/mongo:/data/db

networks:

- backend

redis:

build: ./redis

volumes:

- $/redis:/data

ports:

- 6310:6379

networks:

- backend

docker 搭建 lnmp 環境

這幾天學了 docker 又用 docker 搭建了自己的環境。這中間遇到了很多坑,為此特意寫此博文,供你們搭建環境的時候借鑑。本篇本章預設你有 docker 的基本知識 本篇用到的環境 實踐 搭建 dockerfile 首先我們編寫我們的 dockerfile mysql from mysql 5...

Docker搭建LNMP環境

關於什麼是docker,建議大家先上網查查有關的用法。如果您不了解,在這篇文章中,您可以簡單的理解為他是乙個輕量級的虛擬機器。一 docker安裝mysql 首先,我們從倉庫拉取乙個mysql的映象 docker pull mysql 5.6然後我們可以通過命令 docker images 檢視我們...

docker搭建lnmp環境

安裝 nginx 1 檢視可用版本 docker search nginx 2 獲取nginx映象 docker pull nginx 版本 3 檢視本地映象 docker images 4 執行容器 docker run name my nginx p 81 80 d nginx 引數說明 nam...