编写shell和使用docker-compose创建LNMP容器

在创建容器docker的过程中,如果单独使用docker命令操作会比较繁琐,如果把容器运用到生产环境,我们必须要把服务容器里面的配置文件,主目录路径,日志文件,端口全部映射出来,这边可以提供2种方法进行操作。

一.通过编写shell脚本来运行

shell脚本可以方便对单个节点容器的管理

1. docker_mysql的创建

vim  docker_mysql.sh

#!/bin/bash
docker run -it -d -p 3306:3306 \                      #设置主机端口和对应的映射端口
-e MYSQL_ROOT_PASSWORD=123456 \                       #设置环境变量,此时为mysql的初始密码
-v /root/docker/mysql_data/mysql:/var/lib/mysql \     #把容器里面的路径映射到主机上
--name mysql 9cfcce23593a                             #设置此容器的名称,后面为该容器的ID,在本地或者远程仓库。

2.docker_php的创建

vim docker_php.sh

#!/bin/bash
docker run -d -p 9000:9000 \                           #设置主机端口和对应的映射端口
-v /root/docker/nginx_data/html/:/var/www/html/  \     #映射主文件目录到主机上
-v /root/docker/php_data/logs:/var/log \               #映射日志到主机上
--link mysql:mysql \                                   #把上面的mysql关联在一起
--name php 8c82028c5638                                #设置此容器的名称,后面为该容器的ID。

3.docker_nginx的创建

vim docker_nginx.sh

#!/bin/bash
docker run -d -p 80:80 --name nginx \                        #设置主机端口和对应的映射端口,设置主机名
-v /root/docker/nginx_data/html/:/usr/share/nginx/html/ \    #映射主文件目录到主机上
-v /root/docker/nginx_data/conf/:/etc/nginx/ \               #映射配置文件到主机上
-v /root/docker/nginx_data/logs/:/var/log/nginx/ \           #映射日志到主机上
--link php:php \                                             #把上面的php关联到一起
--privileged=true 4037a5562b03

4.修改nginx的配置文件

vim vim /root/docker/nginx_data/conf/conf.d/default.conf

server {
listen 80;
server_name localhost ;
root /usr/share/nginx/html/;
index index.php index.html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

listen 443 ssl;
ssl_certificate "/etc/pki/nginx/server.pem";
ssl_certificate_key "/etc/pki/nginx/private/server.key";

location / {
try_files $uri $uri/ /public/index.php?$query_string;
}

location ~ \.php$ {
root /var/www/html/backstage_jiguang;
fastcgi_pass 172.17.0.3:9000;
index index.php index.htm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

创建:分别执行 sh docker_mysql.sh  ;   sh docker_php.sh   ;   sh docker_nginx.sh 就能创建环境,一定要按照顺序来执行,因为php和nginx都关联了前者,必须前者创建后才能创建后者。

查看:up表示已经创建成功,可以通过访问本机路径来测试配置是否正确。

[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8ca0c3965b52 4037a5562b03 "nginx -g 'daemon of…" 13 hours ago Up 13 hours 0.0.0.0:80->80/tcp nginx
9f5b20587150 8c82028c5638 "docker-php-entrypoi…" 13 hours ago Up 13 hours 0.0.0.0:9000->9000/tcp php
4da93455aee2 9cfcce23593a "docker-entrypoint.s…" 13 hours ago Up 13 hours 0.0.0.0:3306->3306/tcp, 33060/tcp mysql

二.通过docker-compose一键创建docker环境

除了用shell脚本外,我们还能用docker-file,docker-compose来编写yaml文件一键创建部署环境,docker-compose是docker提供的一个命令行工具,它可以定义和运行多个容器的组成,我们这边是通过编写yaml格式的文件来声明和定义应用程序和各个服务。

首先docker-compose需要的版本比较高,如果是docker 1.1左右的低版本需要更新到高版本。

docker和docker-compose最新版本安装

编写yaml文件:因为上面已经创建了sh的脚本,我们参照上诉进行编写:

vim  docker-compose.yml

version: '3'

services:
mysql1:
container_name: mysql1
image: 9cfcce23593a
restart: always
expose:
- "3307"
ports:
- "3307:3307"
volumes:
- /root/docker/mysql_data/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
php1:
container_name: php1
image: 8c82028c5638
tty: true
restart: always
expose:
-  "9001"
ports:

- "9001:9001"
volumes:
- /root/docker/nginx_data/html/:/var/www/html/
- /root/docker/php_data/logs:/var/log
depends_on:
- mysql1
links:
- mysql1
nginx1:
container_name: nginx1
image: 4037a5562b03
tty: true
restart: always
ports:
- "81:81"
- "443:443"
volumes:
- /root/docker/nginx_data/html/:/usr/share/nginx/html/
- /root/docker/nginx_data/conf/:/etc/nginx/
- /etc/pki/nginx/server.pem:/etc/pki/nginx/server.pem
- /etc/pki/nginx/private/server.key:/etc/pki/nginx/private/server.key
- /root/docker/nginx_data/logs/:/var/log/nginx/
depends_on:
- php1
links:
- php1

 

创建:首先我们要在yaml的当前路径下执行命令,名称最好也叫docker-compose:

docker-compose up -d    #一键创建

docker-compose down    #一键关闭并且删除

docker-compose  stop/start/rm   容器     # 停止/开始/删除

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇