這幾天學了 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...