在docker 上使用alpine linux建立简易静态网站

╰+哭是因爲堅強的太久メ 2022-08-23 03:57 229阅读 0赞

最近实验室的学弟学妹们要展示自己的静态网站作业,想着自己阿里云上还有一台服务器,就准备用docke 给他们做一个展示。参考了一部分dockerfile但是仍然不太好
列出Dockerfile

  1. FROM alpine:latest
  2. MAINTAINER becivells <becivells@gmail.com>
  3. RUN apk add --update openssh
  4. RUN apk add nginx
  5. RUN ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa
  6. RUN sed -i "s/UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config && sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config && sed -i "s/PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && sed -i "s/#AuthorizedKeysFile/AuthorizedKeysFile/g" /etc/ssh/sshd_config
  7. EXPOSE 80
  8. EXPOSE 22
  9. CMD ["nginx", "-g", "daemon off;"] CMD ["/usr/sbin/sshd","-D"]

建立docker 镜像dockerfile要和执行命令的在一个路径下

  1. docker build -t alpine:nginx_ssh .

alpine linux 确实小。而且管理方便。但是软件源少,也缺少一些管理命令需要手动安装

  1. apk --update add 软件名#更新并且下载软件
  2. 例如 apk --update add openssh #我参照官网上配置ssh,结果ssh死活不能用
  3. apk search 软件名 #搜索软件

觉得其他的和其他linux 基本上都一样
建立以后运行
docker run -i -t -p 80:80 -p 2333:22 alpine:nginx_ssh sh
下一条只做参考

  1. docker run -i -t -p 80:80 -p 2333:22 -v /docker/alpine/nginx:/var/lib/nginx/html alpine:nginx_ssh sh

2016-11-5改进了一下,用证书登录,当然也可以用密码登陆

  1. FROM alpine:latest
  2. MAINTAINER becivells <becivells@gmail.com>
  3. RUN apk add --update openssh
  4. RUN apk add nginx
  5. RUN ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa &&\
  6. ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa &&\
  7. ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -N '' -t ecdsa &&\
  8. ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -N '' -t ed25519
  9. RUN sed -i "s/UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config && sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config && sed -i "s/PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && sed -i "s/#AuthorizedKeysFile/AuthorizedKeysFile/g" /etc/ssh/sshd_config
  10. RUN adduser -D www &&\
  11. mkdir -p /home/www/.ssh &&\
  12. mkdir -p /run/nginx/ &&\
  13. mkdir -p /home/www/html &&\
  14. ln -s /home/www/html/ /var/www/ && \
  15. echo "www:123456" | chpasswd
  16. COPY nginx.conf /etc/nginx/nginx.conf
  17. RUN chown www:www -R /home/www/ &&\
  18. chmod 755 -R /home/www/ &&\
  19. echo "nginx" >>/etc/start.sh &&\
  20. echo "/usr/sbin/sshd -D" >>/etc/start.sh
  21. EXPOSE 80
  22. EXPOSE 22
  23. CMD ["/bin/sh","/etc/start.sh"]

nginx.conf

  1. worker_processes 1;
  2. events {
  3. worker_connections 1024;
  4. }
  5. http {
  6. include mime.types;
  7. default_type application/octet-stream;
  8. autoindex on;
  9. autoindex_exact_size on;
  10. autoindex_localtime on;
  11. sendfile on;
  12. keepalive_timeout 65;
  13. server {
  14. listen 80;
  15. server_name localhost;
  16. location / {
  17. root /var/www/;
  18. }
  19. }
  20. }

运行

  1. docker run -d -p 80:80 -p 23333:22 -v /主机目录/:/var/www nginx

可以拉取docker pull becivells/nginxssh

可以写个脚本批量开启

参考https://hub.docker.com/r/danielguerra/alpine-sshd/~/dockerfile/

发表评论

表情:
评论列表 (有 0 条评论,229人围观)

还没有评论,来说两句吧...

相关阅读

    相关 IIS 构建静态网站

    本文档将指导您完成安装 IIS Web 服务器并将其配置为提供静态内容的过程。静态内容是一个网页 (HTML),它完全按照存储的方式交付给用户。相比之下,动态内容由 Web 应

    相关 linux使用docker

    由于没有linux系统,就在windows7上面装了一个linux的虚拟机,然后想模仿一下公司的开发环境,于是在虚拟机中安装了各种需要的工具,docker是早已经安装好了,就是