• netcore 的docker 配置文件


    FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base  
    WORKDIR /app  
    COPY . .  
    EXPOSE 80  
    #设置时间为中国上海  
    ENV TZ=Asia/Shanghai  
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone  
    #修改包源 否则更新慢  
    RUN sed -i 's#http://deb.debian.org#https://mirrors.aliyun.com#g' /etc/apt/sources.list  
    RUN mkdir Log
    #安装vim libgdiplus  ipconfig  ping  
    RUN apt-get update && apt-get install -y vim && apt-get install -y libgdiplus && apt install net-tools && apt install -y  iputils-ping 
    # 设置环境变量  
    ENV MysqlDb "Data Source=xxx.xxx.xxx.xxx;Database=test;User ID=root;Password=123456&;pooling=true;port=3306;sslMode=None;CharSet=utf8;"  
    ENTRYPOINT ["dotnet", "dockertest.dll"]  
    
    注意

    1 将此Dockerfile 文件拷贝到发布后的目录 比如c:/public
    2 执行 >docker build -t dockerdemo . 后面有个英文点
    3 发布容器 publish>docker run --name dockerdemo -e MysqlDb=fsdafafsdffffsdf -d -p 8077:80 dockerdemo

    netcore 代码
     public void ConfigureServices(IServiceCollection services)
            {
                String MysqlDb= this.Configuration.GetValue<string>("MysqlDb");
    
                services.AddControllers();
            }
    

    注意:获取配置变量的值的顺序
    -e后面设置的变量值优先,其次是Dockerfile配置的变量值,最后是appsetting.json里面的值.
    即 先取-e后的fsdafafsdffffsdf
    如果没有设置则取ENV MysqlDb "Data Source=xxx.xxx.xxx.xxx;Database=test;User ID=root;Password=123456&;pooling=true;port=3306;sslMode=None;CharSet=utf8;"里的值
    如果还没有 则取appsetting里的local

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Warning",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "MysqlDb": "local",
      "AllowedHosts": "*"
    }
    

    容器内访问文件夹 /app 为网站的根目录 同Dockerfile中一致。 可以通过下面方式来写入文件内容

     System.IO.File.AppendAllText(@"/app/aaa/b.txt","test");
    

    如果要保存到本机 ,可以做卷映射 -v c:/vol:/app/aaa 注意权限.
    可以通过-u 来指定用户来运行docker。
    更好的解决方式,安装gosu工具,执行如下的脚本:

    #!/bin/bash
    
    # 获取主机用户id
    USER_ID=${LOCAL_USER_ID:-9001}
    # 给主机用户授权制定的非绑定挂载目录
    chown -R $USER_ID /project
    
    # 创建和主机用户相同uid的用户,名为user
    useradd --shell /bin/bash -u $USER_ID -o -c "" -m user
    usermod -a -G root user
    export HOME=/home/user
    exec /usr/local/bin/gosu user "$@"
    
    docker build -t dockerdemo .   #创建镜像
    docker run --name dockerdemo -v c:/vol:/app/aaa  -d -p 8077:80 dockerdemo  #发布容器
    

    参考文章 https://padeoe.com/docker-volume-file-permission-problem/
    https://blog.csdn.net/boling_cavalry/article/details/93380447

    Dockerfile文件 https://files.cnblogs.com/files/wang2650/Dockerfile.zip


    作者:过错
    出处:http://www.cnblogs.com/wang2650/
    关于作者:net开发做的久而已。十余年时光虚度!
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以邮件:wang2650@163.com  联系我,非常感谢。

  • 相关阅读:
    Python面向对象
    Python
    05、Win7上openSSH的安装与配置
    关于C++中的类型转换
    正确地使用智能指针
    为多态基类声明多态析构函数
    透视校正插值(Perspective-Correct Interpolation)
    保持const和non-const函数代码的一致
    第二章 信息的表示和处理
    《Linux内核分析》课程总结
  • 原文地址:https://www.cnblogs.com/wang2650/p/14338469.html
Copyright © 2020-2023  润新知