docker 搭建 lnmp 環境

2021-08-21 17:40:26 字數 4893 閱讀 2448

這幾天學了 docker 又用 docker 搭建了自己的環境。這中間遇到了很多坑,為此特意寫此博文,供你們搭建環境的時候借鑑。

本篇本章預設你有 docker 的基本知識

本篇用到的環境 實踐

搭建 dockerfile

首先我們編寫我們的 dockerfile

mysql

from mysql:5.7

# 設定時區

env tz=asia/shanghai

run ln -snf /usr/share/zoneinfo/$tz /etc/localtime && echo

$tz > /etc/timezone

nginx

from nginx

# 設定時區

env tz=asia/shanghai

run ln -snf /usr/share/zoneinfo/$tz /etc/localtime && echo

$tz > /etc/timezone

兩個映象都不需要做什麼更改,在這裡我們只是更改我們的時區,調整系統時間。

php

from php:7.2-fpm

# 設定時區

env tz=asia/shanghai

run ln -snf /usr/share/zoneinfo/$tz /etc/localtime && echo $tz > /etc/timezone

# 安裝 php 拓展

run apt-get update && apt-get install -y \

git \

libfreetype6-dev \

libjpeg62-turbo-dev \

libpng-dev \

&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \

&& docker-php-ext-install -j$(nproc) gd \

&& docker-php-ext-install zip \

&& docker-php-ext-install pdo_mysql \

&& docker-php-ext-install opcache \

&& docker-php-ext-install mysqli \

&& rm -r /var/lib/apt/lists/*\

&& pecl install yaf-3.0.7 \ #yaf框架拓展

&& pecl install xdebug-2.6.0 \

&& pecl install redis-4.1.0 \

&& docker-php-ext-enable yaf xdebug redis

# 建立使用者

run usermod -u 1000 www-data

大家可以根據自己需要的拓展,自行安裝,我因為要搭建yaf的環境,所以我用到了該拓展。

編寫 docker-compose.yml 檔案

其實這個檔案你也可以不編,因為考慮我的專案以後可能要做集群,所以我採用這種方式安裝

version: '3.2'

services:

mysql:

build: ./mysql/

ports:

-"3306:3306"

volumes:

-type: bind

source: ./work/conf/mysql

target: /etc/mysql

-db-data:/var/lib/mysql

-type: bind

source: ./work/logs/mysql

target: /var/log/mysql

environment:

mysql_root_password: 123456

mysql_database: dawnapi

mysql_user: xsp

mysql_password: 04221021

restart: always

command: "--character-set-server=utf8"

networks:

-backend

nginx:

build: ./nginx/

depends_on:

-php-yaf

ports:

-"80:80"

volumes:

-./work/conf/nginx:/etc/nginx

-type: bind

-type: bind

source: ./work/logs/nginx

target: /var/log/nginx

restart: always

command: nginx -g 'daemon off;'

networks:

-frontend

php-yaf:

build: ./php-yaf/

ports:

-"9000:9000"

volumes:

-./work/php/etc:/usr/local/etc

-./work/logs/php-fpm:/usr/local/etc/log/php-fpm

networks:

-frontend

restart: always

command: php-fpm

networks:

frontend:

backend:

volumes:

db-data:

我們對這個檔案拆分進行解析

mysql: 

build: ./mysql/

ports:

-"3306:3306"

volumes:

-type: bind

source: ./work/conf/mysql

target: /etc/mysql

-db-data:/var/lib/mysql

-type: bind

source: ./work/logs/mysql

target: /var/log/mysql

environment:

mysql_root_password: 123456

mysql_database: dawnapi

mysql_user: xsp

mysql_password: 04221021

restart: always

command: "--character-set-server=utf8"

networks:

-backend

nginx:

build: ./nginx/

depends_on:

-php-yaf

ports:

-"80:80"

volumes:

-./work/conf/nginx:/etc/nginx

-type: bind

-type: bind

source: ./work/logs/nginx

target: /var/log/nginx

restart: always

command: nginx -g 'daemon off;'

networks:

-frontend

php-yaf:

build: ./php-yaf/

ports:

-"9000:9000"

volumes:

-./work/php/etc:/usr/local/etc

-./work/logs/php-fpm:/usr/local/etc/log/php-fpm

networks:

-frontend

restart: always

command: php-fpm

寫好之後執行docker-compose up就安裝成功了,這時候我們再訪問 127.0.0.1,會發現我們訪問失敗了。因為我們的配置檔案還沒有修改。

修改 nginx 配置檔案

server 

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

## error_page 500 502 503 504 /50x.html;

# location = /50x.html

# proxy the php scripts to apache listening on 127.0.0.1:80

##location ~ \.php$

# pass the php scripts to fastcgi server listening on 127.0.0.1:9000

# location ~ \.php$

# deny access to .htaccess files, if apache's document root

# concurs with nginx's one

##location ~ /\.ht

}

參照修改。 修改了一般就訪問成功了。

Docker搭建LNMP環境

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

docker搭建lnmp環境

四 參考 有收穫的話請加顆小星星,沒有收穫的話可以反對沒有幫助舉報三連 from 指定基礎映象 from 映象 from php 7.2 fpm run 執行 run 命令 orrun 可執行檔案 引數1 引數2 run echo usr share nginx html index.html ru...

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...