#目标#
- 用vscode编写基于.net6的c#程序
- 调试及运行在远程docker中
这样做的好处有三:
1、不受本机环境、性能等因素制约。
2、可复用,本机只要装个vscode,不需要装一大堆环境。下次再用只需要重建一下docker即可。
3、开发完成后只要简单的打包即可部署,开发环境即正式环境。
开始:
docker内新建目录 /APP,用来映射程序源码文件夹
宿主机目录如下:
App
└── dotnet
├── vscodeenv
│ ├── vscode-server
│ ├── vscode-server-insiders
│ └── vscode-server-insides
└── workspace
接下来在/App/dotnet目录下新建Dockerfile
ARG REPO=mcr.microsoft.com/dotnet/aspnet
FROM mcr.microsoft.com/dotnet/sdk:6.0
######################################################
RUN su
RUN echo "root:passwd"|chpasswd
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
CMD ["/usr/sbin/sshd", "-D"]
RUN mkdir /app
WORKDIR /app
EXPOSE 22
注:修改docker内linux的root密码,允许root登陆ssh
在/App目录下新建docker-compose.yml
version: "3.3"
services:
devhost:
build:
context: ./dotnet
dockerfile: Dockerfile
image: "devhost:v1"
ports:
- "8022:22"
volumes:
- "./dotnet/workspace:/app"
- "./dotnet/vscodeenv/vscode-server:/root/.vscode-server"
- "./dotnet/vscodeenv/vscode-server-insides:/root/.vscode-server-insiders"
restart: "always"
vloumes映射的目录主要是为了vscode安装插件后,如果docker重启,安装的插件无需再次安装。
接下来把源代码copy至宿主机的/App/dotnet/workspace下
打开vscode远程连接,配置如下
Host 192.168.1.10
HostName 192.168.1.10
Port 8022
User root
其中192.168.1.10是宿主的ip。接下来连接ssh,输入密码,打开docker内/App目录就能愉快的写代码了。