资源规划
| 主机名 | 容器IP | 端口 | 暴露端口 |
|---|---|---|---|
| app-1 | 192.169.0.2 | 8080 | N.A |
| app-2 | 192.169.0.3 | 8080 | N.A |
| v-nginx | 192.169.0.100 | 80 | 80 |
获取镜像
# 查看可用的稳定版本sudo docker search javasudo docker pull java:8sudo docker image ls |grep java
服务编排
mkdir -p /share/appvi /share/app/docker-compose.yml
服务编排内容如下:
version: "2"services:nginx:container_name: v-nginximage: nginx:1.13restart: alwaysprivileged: trueports:- 80:80volumes:- ./app:/app- ./nginx/conf.d:/etc/nginx/conf.d/default.confnetworks:nginx-lsb:ipv4_address: ${nginx_lsb}app-1:restart: alwaysbuild: ./appworking_dir: /appcontainer_name: app-1privileged: truevolumes:- ./app:/appexpose:- "8080"networks:nginx-lsb:ipv4_address: ${web1_addr}depends_on:- nginxapp-2:restart: alwaysbuild: ./appworking_dir: /appcontainer_name: app-2privileged: truevolumes:- ./app:/appexpose:- "8080"networks:nginx-lsb:ipv4_address: ${web2_addr}depends_on:- nginxnetworks:nginx-lsb:driver: bridgeipam:config:- subnet: 192.169.0.0/16
服务配置
Φ 配置文件概览
以下配置相关文件保持与编排文件相同目录。
d app # app初始化配置
d static # 放置图片资源
- Dockerfile # 镜像制作文件
- app.jar # jar包
d nginx # nginx初始化配置
- conf.d # nginx配置(反向代理、负载策略)
- .env # 环境变量
Φ .env
web1_addr=192.169.0.2
web2_addr=192.169.0.3
nginx_lsb=192.169.0.100
Φ Dockerfile
FROM java:8
MAINTAINER polaris <450733605@qq.com>
VOLUME /tmp
ADD app.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8080
Φ conf.d
upstream app {
server app-1:8080 weight=1;
server app-2:8080 weight=1;
}
server {
listen 80;
charset utf-8;
access_log off;
server_name app;
location / {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_pass http://app;
}
location /static {
access_log off;
expires 30d;
alias /app/static;
}
}
服务构建
cd /share/app
sudo docker-compose -f docker-compose.yml build --no-cache # 不带缓存构建(只创建镜像,不会启动容器)
sudo docker-compose -f docker-compose.yml up -d # 构建后运行
sudo docker-compose -f docker-compose.yml up --build # 跟踪方式构建,可用于调试
验证
cd /share/app
# 查看进程
sudo docker-compose -f docker-compose.yml ps
# URL请求验证
sudo curl -XGET http://192.168.0.101/index.html
# 查看日志
sudo docker logs app-1
sudo docker logs -f -t --tail=50 app-1
# 查看网络
sudo docker network ls
sudo docker inspect app-1
# 停止
sudo docker-compose -f docker-compose.yml stop
# 移除
sudo docker-compose -f docker-compose.yml down
