代码改变世界

阿里云部署 (四) 部署net 之Swarm

2021-09-12 16:31  qgbo  阅读(70)  评论(0)    收藏  举报

总结前面的几篇,用Swarm 部署

1.写dockerFile:

FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
ENTRYPOINT ["dotnet", "Backend.dll","--urls","http://*:5000"]

2.写docker-compose.yml

version: "3.8"

services:
  net5:
    image: net5
    ports:
      - "5678:80"
    networks:
      - overlay
    depends_on:
      - SqlServer
    volumes:
       - /app:/app
    deploy:
      replicas: 1

  nginx:
    image: nginx
    networks:
       - overlay
    ports:
       - "443:443"
       - "80:80"
    volumes:
       - /nginxdata/:/etc/nginx/conf.d
    deploy:
      replicas: 1

  SqlServer:
    image: mcr.microsoft.com/mssql/server:2017-latest
    environment:
       ACCEPT_EULA: 'Y'
       SA_PASSWORD: 'xxxx'
    networks:
       - overlay
    ports:
       - "1433:1433"
    deploy:
      replicas: 1

  Centos:
    image: centos
    command: sleep 10000000
    networks:
       - overlay
    deploy:
      replicas: 1

networks:
  overlay:

 

 

html 是公司站点入口

其他的配置:

[root@caixue /]# cat  nginxdata/rewrite.conf
server {
    listen 80;
    rewrite ^(.*) https://$host$1 permanent;
}
[root@cae /]# cat  nginxdata/app.ryrkj.conf
server {
    listen 443 ssl;
    server_name app.ryrkj.com;
    ssl_certificate  /etc/nginx/conf.d/5203971_app.ryrkj.com.pem;  
    ssl_certificate_key  /etc/nginx/conf.d/5203971_app.ryrkj.com.key;   
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   
    ssl_prefer_server_ciphers on;
    client_max_body_size   20m;

    location / {
                     proxy_pass http://app_net5:5000;

               # root /usr/share/nginx/html;
               # index index.html index.htm;
        }
}
[root@cixue /]# cat  nginxdata/ryrkj.conf
server {
    listen 443 ssl;   #SSLЭ▒▒▒▒ʶ˿ں▒Ϊ443▒▒▒˴▒▒▒δ▒▒▒ssl▒▒▒▒▒ܻ▒▒▒▒Nginx▒޷▒▒▒▒
    server_name ryrkj.com www.ryrkj.com;  #▒▒localhost▒޸▒Ϊ▒▒֤▒▒󶨵▒▒▒▒▒▒▒▒磺www.example.com▒▒
    ssl_certificate  /etc/nginx/conf.d/5153330_ryrkj.com.pem;   #▒▒domain name.pem▒滻▒▒▒▒֤▒▒▒▒ļ▒▒▒
    ssl_certificate_key  /etc/nginx/conf.d/5153330_ryrkj.com.key;   #▒▒domain name.key▒滻▒▒▒▒֤▒▒▒▒▒Կ▒ļ▒▒▒
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #ʹ▒ô˼▒▒▒▒׼▒▒▒
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #ʹ▒ø▒Э▒▒▒▒▒▒▒▒á▒
    ssl_prefer_server_ciphers on;
    location / {
                root /etc/nginx/conf.d/html;
                index index.html index.htm;
        }
}

运行  docker  stack deploy -c docker-compose.yml app, 就可以运行站点

起来了2个网站,一个静态站点,一个管理系统。

注意

1.这里的nginx 的数据卷,挂数据卷挂的是目录,也可以是文件,文件可以看  这个就是挂的文件

这里在宿主机上有  nginxdata 这个文件夹,然后deploy, 容器起来之后会挂在这个文件夹中的内容,而容器内部的这个文件夹的原来数据会没有了。

2.由于net5 的容器的网络直接挂在了 这些服务上,所以export 也可以不要了。

3. nginx 的conf.d 文件夹的 .conf 文件,会被加载。这个和  /etc/profile.d/*.sh 类似。/etc/profile 里面增加了环境变量之后, 需要运行下  . /etc/profile, 才能立即起效。