将.net core2.x+sqlserver项目发布到docker.呵呵,操作很自如,如下.

1.罗嗦几句

在跑起来之前浪费了不少时间和精力,起初是将docker for windows的环境转换成了 window(安装docker for windows之后,右下角的小鲸鱼右击之后转换),但是很操蛋,也做了随笔但是没有发布之保存了草稿,记录了很多的问题以及问题的解决方式,浪费了一天时间.跑起来之后感觉幸福来之不易所以拿出来分享下.下面看我们的效果图;

2.效果预览

...其他内容

可以看到我们的项目成功跑起来并完成了在sql server数据库的迁移操作.

我们看下我们的项目是否可以正常访问,(我这里映射的docker expose端口60000到外部端口 8089)

毫无悬念的可以访问到我们的界面了.和前几篇写的随笔的时候 熟悉的界面又回来了.下面就说下配置以及操作.

3.环境及配置

3.1环境

我们要将项目发布到docker,那么我们首要解决的就是docker的获取,是的,我们也就是用我们惯用的windwos环境,安装docker for widnows,

获取: https://www.docker.com/products/docker-desktop

选取您需要的版本即可.安装直接下一步下一步就行,安装完成之后,我们要看下我们的容器是windows还是linux,因为这里我们使用的是 linux container ,查看如下:

然后我们点击settings->Shared Drives,选择你要和docker 共享的磁盘,然后点击Advanced 分配你的CPU和内存即可,参考如下,,,我是默认的:

好的,docker我们就简单的配置完了.下面,就到了重要环节了,此时如果你看过其他的入门的文章的话,你可能绝的下一步骤就是创建项目 直接丢docker就可以泡起来了,或者,顶多在创建一个Dockerfile就行了.我告诉你,低俗....你被骗了,单纯跑一个项目是没任何问题的,但是我们还要连接数据库(sql server),还要连接redis,mongodb,,,等等...所以,这里还没有配置完.要做的还不少呢.

3.2配置

首先先确保我们的docker环境是有效的,可以在cmd或者powershell中输入docker info,如果不提示docker无效即可.不多说.

下面我们先获取下发布必须的相关镜像 (复制到cmd或者powershell直接回撤),,,当然这一步不是必需的,因为我们一会儿在build我们项目对应的镜像的时候使用到的 相关镜像会自己下载安装:

docker pull microsoft/dotnet

docker pull microsoft/mssql-server-linux

将我们的core项目发布文件复制到指定的文件夹,并cd到这个 文件夹中 ,在其中创建一个 Dockerfile的文件,无后缀!!,内容如下(参考):

# 基于microsoft/dotnet:2.1-sdk or dotnet:latest 默认latest 来创建我们的镜像
FROM microsoft/dotnet

#指定docker的工作目录为 esoftor-master文件夹,也就是容器的默认的文件夹
WORKDIR /usr/local/src/esoftor-api-master

# docker对外暴露的端口
EXPOSE 60000

# 将当前文件夹下的所有文件全部复制到工作目录
COPY . /usr/local/src/esoftor-api-master

#CMD dotnet ESoftor.WebApi.dll 这里自行百度 CMD和ENTRYPOINT的区别
ENTRYPOINT ["dotnet", "ESoftor.WebApi.dll"]

这时候我们的基础工作就完成了.Dockerfile在我们文件夹中位置如下(参考):

到这里我们哈需要继续配置另一个东西. docker-compose.yaml,,,,,,,docker compose ,,,,,docker ......Docker Compose是Docker三剑客之一,用于定义和运行多个Docker容器应用,负责实现对 Docker 容器集群的快速编排。我们可以通过Dockerfile定义一个单独的应用容器。然而在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器等。Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 配置板文件(YAML 格式)来定义一组相关联的应用容器。然后使用使用单个命令,就可以根据配置中创建并启动所有服务。但是值得我们庆幸的事情是,官方很明确的有说明了,docker for windows默认内置了Docker compose,否则的话我们还需要单独安装.

我们cd到 上面截图的 上一层文件夹,也就是Temp文件夹中.创建 一个名称为 docker-compose.yml 的文件.内容参考如下:(这里我只配置了sqlserver),只是为了掩饰core+sql server 在docker中可以跑起来:

version: "3"

services:

  esoftor.api:
    image: esoftor.api:v1.0
    environment:
      - ASPNETCORE_URLS=http://0.0.0.0:60000
      - ConnectionString=Server=sql.data;User=sa;Password=520Tmc1314!;Database=esoftor.source.novel2;
    build:
      context: ./netcoreapp2.1
      dockerfile: Dockerfile
    ports:
      - "8089:60000"
    volumes:
      - ./netcoreapp2.1/:/usr/local/src/esoftor-api-master
    container_name: esoftor.api
    depends_on:
      - sql.data

  sql.data:
    image: microsoft/mssql-server-linux:2017-latest
    environment:
      - SA_PASSWORD=520Tmc1314!
      - ACCEPT_EULA=Y
    ports:
      - "14333:1433"

配置说明:

 version:不解释,自行百度 docker compose 然后看官方解释,,,看了也太大意义

 services:服务,我们这里的服务就是esoftor.api和sql.data,当然这个词是复数形式,也就是说可以配置多个

   esoftor.api 和 sql.data 就是我们自定义的服务名称,随便写

   image:生成的镜像名

   environment:服务环境的变量  ASPNETCORE_URLS=http://0.0.0.0:60000 即:监听的60000的端口,这个和我们的Dockerfile中的EXPOSE是对应起来的.  ConnectionString:不解释,但是要注意的是,这里的 Server=的是我们配置的第二个服务的名称,也就是sqlserver的服务名称.

   build:context:及Dockerfile所在的目录(因为上面我们已经cd到了项目的所在目录的上一级文件夹)  dockerfile:即dockerfile的文件名称

   ports:格式 外部端口:内部端口 这里的内部端口就是我们上面使用的 60000,也是和dockerfile中是对应起来的.

   volumes:格式 项目路径:docker的运行目录,---这里也是和Dockerfile中设置的 WORKDIR是对应的

container_name:生成的容器的名称

depends_on:顾名思义,依赖项;这里我们依赖了我们的另一个服务也就是访问数据库用的

  数据库配置:这里如果你的机器安装了Sql server数据库,你会遇到一个问题就是 在执行的时候会发现1433(sqlserver)使用的被占用了,,,,不是废话吗,所以上面参考配置中,我是用的14333不是1433,我是将14333映射到docker的1433端口,并在 SQL SERVER 的网络配 MSSQLSERVER的TCP/IP的IP中修改了127.0.0.1的1433的默认配置为14333,并设置为启用

 以上我们呢的基础工作就完成了,下面开始愉快的玩耍起来吧.

4.创建镜像并运行项目

此时我们在cmd或者powershell中输入:docker-compose build

默默的等待执行完成吧.

完成之后继续输入:

docker-compose up

然后如果没有错误的话就可以看到我们开篇时候的截图了.

.net core 2.x - docker(for windows)-linux配置及项目+SqlServer发布的更多相关文章

  1. 使用WSL连接Docker Server(Windows/Linux)

    在Windows下安装Docker for Windows Cotana搜索功能,打开Windows的Hype-v功能(注:会影响Virtualbox和Vmware的使用)并重启电脑. 从Docker ...

  2. .NET Core 跨平台 串口通讯 ,Windows/Linux 串口通讯,flyfire.CustomSerialPort 的使用

    目录 1,前言 2,安装虚拟串口软件 3,新建项目,加入 flyfire.CustomSerialPort 4,flyfire.CustomSerialPort 说明 5,开始使用 flyfire.C ...

  3. 一台电脑上同启动两个Tomcat的方式,windows/Linux配置。

     安装两个jdk,一个JDK路径在:C:\ProgramFiles (x86)\Java\jdk1.7.0_25,另外一个JDK的路径在E:\UCMSServer\j2sdk 在环境变量里并设置J ...

  4. Windows下配置Jenkins 实现自动发布maven项目至tomcat(svn+maven+tomcat)

    Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放tomcat的8080端口 Linux(CentOS):firewall-cmd --zone=public ...

  5. linux配置tomcat项目包

    安装配置tomcat 操作系统:  centos 7.1 使用模式:命令模式 使用工具:xshell5 .xftp5 注意之前有配置过tomcat需要进行以下4个步骤 1.关闭网管服务 输入命令: 进 ...

  6. Linux 配置TomCat 项目三大步骤

    一:  安装 JRE 01: 下载 server-jre 安装包 => http://www.oracle.com/technetwork/java/javase/downloads/serve ...

  7. Docker for Windows 中文文档(3)——Docker Settings

    Docker设置 Docker运行时,显示Docker鲸鱼. 默认情况下,Docker鲸鱼图标被放置在“通知”区域中. 如果隐藏,单击任务栏上的向上箭头显示. 提示:您可以将鲸鱼固定在通知框外面,使其 ...

  8. Windows系统下使用Jenkins 自动发布 .NET core到Linux平台下Docker

    准备工作(安装过程可以百度,已安装的可以跳过) a)     安装Jenkins,安装包下载地址:http://mirrors.tuna.tsinghua.edu.cn/jenkins/windows ...

  9. Windows下构建ASP.NET Core+Code First+Docker

    背景介绍 本文将会示范如何在Windows系统下基于ASP.NET Core构建跨平台服务,并通过Docker容器运行发布. 首先说一下为什么选择这一套组合: 我本人和我们Code4Thought团队 ...

随机推荐

  1. 牛客小白月赛13-J小A的数学题 (莫比乌斯反演)

    链接:https://ac.nowcoder.com/acm/contest/549/J来源:牛客网 题目描述 小A最近开始研究数论题了,这一次他随手写出来一个式子,∑ni=1∑mj=1gcd(i,j ...

  2. (贪心 字符串 打好基础)51nod 1182完美字符串

    约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数. 约翰不在乎字母大小写(也就是说字母A和a的完美度相同).给 ...

  3. python8--文件操作 with。。。open语法

    复习   一.类型转换 1.数字类型:int() | bool() | float()  2.str与int:int('10') | int('-10') | int('0') | float('-. ...

  4. js重点--匿名函数

    推荐博客:https://www.cnblogs.com/pssp/p/5216668.html 函数是必须要有函数名的,不然没有办法找到它,使用它. 如果没有名字必须要有一个依附体,如:将这个匿名函 ...

  5. 2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践 免杀原理及基础问题回答 一.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. ...

  6. 【1】MySQL大数据量分页查询方法及其优化

    ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适应场景: 适用于数据量较少的情况(元组百/千 ...

  7. HDU 2051(进制转换)

    题意是将十进制数转换成二进制数. 从网上找到的十进制转 k 进制的做法,代码如下: #include <bits/stdc++.h> using namespace std; ','A', ...

  8. [Android] Android 支持下拉刷新、上拉加载更多 的 XRecyclerview

    XRecyclerView一个实现了下拉刷新,滚动到底部加载更多以及添加header功能的的RecyclerView.使用方式和RecyclerView完全一致,不需要额外的layout,不需要写特殊 ...

  9. Java 集合系列08之 List总结

    一.List概述 1. List是一个接口,它继承于Collection接口,代表有序集合 2. ArrayList, LinkedList, Vector, Stack是List的4个实现类. Ar ...

  10. python序列化与反序列化(json与pickle)

    在python中,序列化可以理解为将python中对象的编码格式转换为json(pickle)格式的字符串,而反序列化可以 理解为将json(pickle)格式的字符串转换为python中对象的编码格 ...