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
联系我,非常感谢。