案例一:项目打包部署
1.Docker Compose用法
[root@linux-node1 exam01]# pwd
/opt/exam01
[root@linux-node1 exam01]# ll
total 46580
-rw-r--r-- 1 root root 30448106 Feb 4 22:01 Compose.zip
-rw-r--r-- 1 root root 8733389 Aug 31 2017 docker-compose-linux-x86_64.zip
-rw-r--r-- 1 root root 8507412 Sep 23 2017 wordpress-4.7.4-zh_CN.tar.gz
[root@linux-node1 exam01]# unzip docker-compose-linux-x86_64.zip
Archive: docker-compose-linux-x86_64.zip
inflating: docker-compose
[root@linux-node1 exam01]# ll
total 55232
-rw-r--r-- 1 root root 30448106 Feb 4 22:01 Compose.zip
-rw-r--r-- 1 root root 8858496 Aug 31 2017 docker-compose
-rw-r--r-- 1 root root 8733389 Aug 31 2017 docker-compose-linux-x86_64.zip
-rw-r--r-- 1 root root 8507412 Sep 23 2017 wordpress-4.7.4-zh_CN.tar.gz
[root@linux-node1 exam01]# chmod +x docker-compose
[root@linux-node1 exam01]# mv docker-compose /usr/bin/
[root@linux-node1 exam01]# unzip Compose.zip
[root@linux-node1 exam01]# ll
total 46580
drwxr-xr-x 6 root root 84 Jan 19 16:04 compose_lnmp
drwxr-xr-x 6 root root 87 Jan 19 16:23 compose_nginx_tomcat
-rw-r--r-- 1 root root 30448106 Feb 4 22:01 Compose.zip
-rw-r--r-- 1 root root 8733389 Aug 31 2017 docker-compose-linux-x86_64.zip
-rw-r--r-- 1 root root 8507412 Sep 23 2017 wordpress-4.7.4-zh_CN.tar.gz
[root@linux-node1 compose_lnmp]# docker-compose --help


官网:
https://docs.docker.com/compose/compose-file/
Compose file version 3 reference
2.一键部署LNMP网站平台实战
[root@linux-node1 compose_lnmp]# tree
.
├── docker-compose.yml
├── mysql
│ ├── conf
│ │ └── my.cnf
│ └── data
├── nginx
│ ├── Dockerfile
│ ├── nginx-1.12.1.tar.gz
│ └── nginx.conf
├── php
│ ├── Dockerfile
│ ├── php-5.6.31.tar.gz
│ └── php.ini
└── wwwroot
└── index.php
[root@linux-node1 compose_lnmp]# cat docker-compose.yml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 81:80
networks:
- lnmp
volumes:
- ./wwwroot:/usr/local/nginx/html
php:
hostname: php
build:
context: ./php
dockerfile: Dockerfile
networks:
- lnmp
volumes:
- ./wwwroot:/usr/local/nginx/html
mysql:
hostname: mysql
image: mysql:5.6
ports:
- 3306:3306
networks:
- lnmp
volumes:
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/data:/var/lib/mysql
command: --character-set-server=utf8
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: wordpress
MYSQL_USER: user
MYSQL_PASSWORD: user123
networks:
lnmp:
[root@linux-node1 nginx]# ls
Dockerfile nginx-1.12.1.tar.gz nginx.conf
[root@linux-node1 nginx]# cat Dockerfile
FROM centos:7
MAINTAINER www.aliangedu.com
RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel
ADD nginx-1.12.1.tar.gz /tmp
RUN cd /tmp/nginx-1.12.1 && \
./configure --prefix=/usr/local/nginx && \
make -j 2 && \
make install
RUN rm -rf /tmp/nginx-1.12.1* && yum clean all
COPY nginx.conf /usr/local/nginx/conf
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["./sbin/nginx", "-g", "daemon off;"]
[root@linux-node1 nginx]# cat nginx.conf
user root;
worker_processes auto;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
root html;
index index.html index.php;
location ~ \.php$ {
root html;
fastcgi_pass php:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
3.一键部署Nginx反向代理Tomcat集群实战
java网站平台架构:
user->nginx->tomcat(n)->mysql
[root@linux-node1 compose_nginx_tomcat]# tree
.
├── docker-compose.yml
├── mysql
│ ├── conf
│ │ └── my.cnf
│ └── data
├── nginx
│ ├── Dockerfile
│ ├── nginx-1.12.1.tar.gz
│ └── nginx.conf
├── tomcat
│ ├── apache-tomcat-8.0.46.tar.gz
│ ├── Dockerfile
│ └── server.xml
└── webapps
└── ROOT
└── index.html
[root@linux-node1 compose_nginx_tomcat]# cat docker-compose.yml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 82:80
networks:
- lnmt
volumes:
- ./webapps:/opt/webapps
tomcat01:
hostname: tomcat01
build: ./tomcat
networks:
- lnmt
volumes:
- /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45
- ./webapps:/usr/local/apache-tomcat-8.0.46/webapps
tomcat02:
hostname: tomcat02
build: ./tomcat
networks:
- lnmt
volumes:
- /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45
- ./webapps:/usr/local/apache-tomcat-8.0.46/webapps
mysql:
hostname: mysql
image: mysql:5.6
ports:
- 3307:3306
networks:
- lnmt
volumes:
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: db
MYSQL_USER: user
MYSQL_PASSWORD: user123
networks:
lnmt:
[root@linux-node1 nginx]# ls
Dockerfile nginx-1.12.1.tar.gz nginx.conf
[root@linux-node1 nginx]# cat Dockerfile
FROM centos:7
MAINTAINER www.aliangedu.com
RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel
ADD nginx-1.12.1.tar.gz /tmp
RUN cd /tmp/nginx-1.12.1 && \
./configure --prefix=/usr/local/nginx && \
make -j 2 && \
make install
RUN rm -rf /tmp/nginx-1.12.1* && yum clean all
COPY nginx.conf /usr/local/nginx/conf
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["./sbin/nginx", "-g", "daemon off;"]
[root@linux-node1 nginx]# cat nginx.conf
user root;
worker_processes auto;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
upstream www.example.com {
#ip_hash;
server tomcat01:8080;
server tomcat02:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://www.example.com;
}
location ~ \.(html|css|js|jpg|png|gif)$ {
root /opt/webapps/ROOT;
}
}
}
太大,拉进放在宿主机上,就不放入镜像中了。
[root@linux-node1 compose_nginx_tomcat]# ls -lh jdk-8u45-linux-x64.tar.gz
-rw-r--r-- 1 root root 166M Sep 1 2016 jdk-8u45-linux-x64.tar.gz
[root@linux-node1 compose_nginx_tomcat]# tar -xf jdk-8u45-linux-x64.tar.gz
[root@linux-node1 compose_nginx_tomcat]# ls
docker-compose.yml jdk1.8.0_45 jdk-8u45-linux-x64.tar.gz mysql nginx tomcat webapps
[root@linux-node1 compose_nginx_tomcat]# mv jdk1.8.0_45/ /usr/local/
[root@linux-node1 compose_nginx_tomcat]# ls
docker-compose.yml jdk-8u45-linux-x64.tar.gz mysql nginx tomcat webapps
启动执行:
[root@linux-node1 compose_nginx_tomcat]# docker-compose up
[root@linux-node1 compose_nginx_tomcat]# docker-compose ps
浙公网安备 33010602011771号