说明
本文承接上文:从零构建1个开发镜像 - 好方 (kengdie.xyz)
开发镜像中新增了ssh服务,这样子就可以远程链接容器,进行开发,也可以将自己的环境提供给其他人,避免将root密码泄露
开发镜像优化
SSH的root密码为Admin12345..,具体见Dockerfile中缩写
Dockerfile优化如下
FROM harbor.kengdie.xyz/k8s/library/ubuntu:22.04
COPY sources.list /etc/apt/sources.list
COPY node-v18.16.0-linux-x64.tar.xz /tmp/node-v18.16.0-linux-x64.tar.xz
COPY pnpm-install.sh /tmp/pnpm-install.sh
RUN apt update && apt install -y mysql-client redis net-tools iputils-ping iproute2 openssh-server openssh-client curl vim wget git python3 python3-pip && python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip && pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && tar xvf /tmp/node-v18.16.0-linux-x64.tar.xz -C /usr/local/ && export PATH=$PATH:/usr/local/node-v18.16.0-linux-x64/bin/ && echo "export PATH=$PATH:/usr/local/node-v18.16.0-linux-x64/bin/" >> ~/.bashrc && npm set registry https://registry.npm.taobao.org && npm install -g npm@9.7.1 && npm install -g pnpm && pnpm set registry https://registry.npm.taobao.org && apt clean && rm -rf /tmp/* && mkdir /run/sshd && sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && sed -i "s/#UseDNS.*/UseDNS no/g" /etc/ssh/sshd_config && echo root:Admin12345.. | chpasswd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
编译以及推送入库
docker build . --no-cache -t harbor.kengdie.xyz/k8s/ubuntu:22.04-dev08
DockerCompose添加开发依赖
docker-compose.yaml如下
version: '3'
services:
code:
image: harbor.kengdie.xyz/k8s/ubuntu:22.04-20230619-dev01
ports:
- "22098:22"
volumes:
- "/code/:/code/"
networks:
- code
links:
- "mysql:mysql"
- "redis:redis"
mysql:
image: harbor.kengdie.xyz/k8s/mysql:8
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: test
networks:
- code
redis:
image: harbor.kengdie.xyz/k8s/redis:7
networks:
- code
networks:
code:
driver: bridge
启动
docker-compose -f docker-compose.yaml up -d
即可如下
连接后,正常远程开发即可
关闭服务器的防火墙,使用vscode的远程开发,通过ssh连接即可