【☆☆阿里云学习三☆☆】django部署、docker安装、docker镜像仓库、Jenkins在docker中安装、web服务使用docker部署

一、django项目在阿里云部署时遇到的问题
1、错误信息:Invalid HTTP_HOST header: ‘xxx.xx.xxx.xxx:8000’. You may need to add ‘xxx.xx’ to ALLOWED_HOSTS
   解决办法: 修改创建项目时生成的setting.py文件,将ALLOWED_HOSTS = []改为ALLOWED_HOSTS = ['*']
2、报错信息:TemplateDoesNotExist
  解决办法,参考:https://blog.csdn.net/wjy397/article/details/48976137,原因是无法找到tempates文件夹,且要主要文件夹的名称大小写,虽然本地运行没问题;
3、日志记录的时间和linux系统时间不一致
  Django在配置文件settings.py 中 默认配置 UTC世界标准时间,修改为:TIME_ZONE = 'Asia/Shanghai'

 ========上面是很久之前记录的,没有使用docker部署,直接git拉取项目,然后命令启动项目的=========

二、docker安装
参考来源:https://www.runoob.com/docker/ubuntu-docker-install.html
其他参考:https://www.huaweicloud.com/zhishi/arc-3376452.html
1、安装
我自己阿里云linux服务器的安装方式,一条命令安装完成就可以直接使用docker了

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

aws安装docker命令:apt  install docker.io

2、常用docker命令
(1)docker images       查看镜像
   docker rmi <镜像id>  删除镜像

       docker rmi REPOSITORY:TAG  删除tag
(2)docker ps             查看运行中的容器
   docker ps  -a         查看所有的容器
   docker rm -f <容器 ID>  删除容器
(3)docker stop <容器 ID>   停止容器
   docker start <容器 ID>    启动已经停止的容器
   docker restart <容器 ID>   重启容器
(4)docker run -itd ubuntu:15.10 /bin/bash  创建一个新的容器,并运行一个命令  --name 容器名 :给新建的容器命名
      -i: 交互式操作。
      -t: 终端。
      -d:后台运行
      ubuntu: ubuntu 镜像。
      /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash 
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入
       docker exec -it <容器 ID> /bin/bash   使用exec不会在exit退出容器时导致容器停止
(5) 创建命令
  docker build -t 镜像名称:镜像tag .    这里的.就是Dockerfile文件所在的目录(1、如果代码没改动,运行该命令后实际还是原来的镜像2、如果使用了已有的镜像名称和TAG,那么原来的镜像名称和tag会置为none

(6)创建TAG(镜像来源的id也可以是已有的镜像名称:TAG表示,如果不加tag,则会默认为镜像名称:latest)  

docker tag  镜像来源的id  创建的镜像名称:tag名称

(7)dockfile文件示例

Dockerfile文件是一个把项目打包成镜像的过程,示例如下

# 基于镜像基础
FROM python:3.6-slim-stretch
 
RUN apt-get update
 
# 创建目录
RUN mkdir -p /opt/data-qa/qa-mock
# 复制指令,从上下文目录中文件复制到指定路径,这里的表示当前路径的内容复制到上面创建出来的目录
COPY . /opt/data-qa/qa-mock
 
# 工作目录
WORKDIR /opt/data-qa/qa-mock
# 安装qa-mock目录下requirements的依赖包
RUN pip install -r requirements.txt
 
# 申明使用的端口
EXPOSE 9000

三、关于docker镜像仓库

默认仓库地址是 docker.io/library/

这个是docker官方的镜像地址,可能还需要注册啊啥啥啥的,而且服务器地址在海外。

这里我们可以使用阿里云自带的容器镜像服务,在服务控制台页面搜索'容器镜像服务'即可,跟着步骤来,创建密码什么的;

创建完镜像仓库后,查看镜像仓库的基本信息,然后再这个页面你就可以看到操作教程,包括登录啊,docker tag啊,docker pull啊,docker push啊,等等

尝试过修改默认地址,试了好久没成功。所以使用阿里云的镜像时,一定要按下面的命令来(带上了镜像地址),否则会指向docker的默认地址去了。

为了方便,我们还可以在docker build的时候镜像名就加上地址,还有tag v1,比如下面web服务可以这么写(如果不写:v1,则会默认tag为latest

docker build -t  阿里云仓库地址/空间/web-demo:v1 .

三、Jenkins在docker中安装

Jenkins官网文档:http://www.jenkins.io/zh/doc/book/installing/#%E5%9C%A8docker%E4%B8%AD%E4%B8%8B%E8%BD%BD%E5%B9%B6%E8%BF%90%E8%A1%8Cjenkins
参考文档:https://www.cnblogs.com/fuzongle/p/12834080.html

docker快速安装jenkins命令,命令解释见Jenkins官网文档(注意--rm 在停掉后容器会删除, 但是数据不会丢失)

docker run \
  -u root \
  --rm \  
  -d \ 
  -p 8080:8080 \ 
  -p 50000:50000 \ 
  -v jenkins-data:/var/jenkins_home \ 
  -v /var/run/docker.sock:/var/run/docker.sock \ 
  jenkinsci/blueocean

安装完之后,通过查看日志的命令查看后面登录时需要的密码,密码在日志中的两组星号中间

docker logs 项目名或PID

然后可以在公网使用域名+端口进行访问jenkins了,登录密码就是上一步获取的,用户名默认是admin

如果是要修改端口,要么删除容器重建,要么改配置,参考:https://www.cnblogs.com/sucretan2010/p/11406608.html

2022-01-01 因为Jenkins部署在容器中,导致不能执行宿主机的命令,so还是把Jenkins装回宿主机中吧

1、jdk依赖安装

apt-get install java-1.8.0-openjdk-devel
# 第二次安装上面那条命令装不了了。。。
# 其中第二条指令可能会出错。不要担心,只要执行完第三条后就会成功
# 按提示敲入回车
add-apt-repository ppa:webupd8team/java
sudo apt update #更新库缓存
sudo apt install openjdk-9-jdk #安装jdk
sudo apt -f install #修复依赖与覆盖问题,完成安装

2、jenkins安装(这这里的默认工作目录在/usr/lib/jenkins/

sudo apt-get update
sudo apt-get install jenkins

如果报错,则执行如下命令

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

再不行则执行下面命令

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 最后面这里应该是报错时出现的一个串码key
sudo apt-get update
sudo apt-get install jenkins

参考:https://www.cnblogs.com/adnny/p/13570513.html

安装时若有如下报错

 

 进入cd /etc/init.d目录执行jenkins start后发现 java版本问题,翻阅别人博客发现,Jenkins 不久前刚宣布:“从 6 月 28 日发布的 Jenkins 2.357 和即将发布的 9 月 LTS 版本开始,Jenkins 最低需要 Java 11”。至此,基本可以肯定就是版本问题了

卸载安装jdk:apt-get remove openjdk-8-jre-headless       sudo apt install openjdk-11-jdk

卸载安装Jenkins:sudo apt-get remove jenkins     apt-get install jenkins

3、修改默认的8080端口(下面命令中2个文件的8080修改为你想设置的端口,然后加载配置,重启服务)

vi /etc/init.d/jenkins
vi /etc/default/jenkins
systemctl daemon-reload
systemctl restart jenkins

4、查看你的登录密码,第一次登录会有提示密码保存在哪个位置

cat /var/lib/jenkins/secrets/initialAdminPassword

四、web服务使用docker部署

参考:https://www.cnblogs.com/zouzou-busy/p/11838524.html

1、环境准备

服务器环境需要有nginx ,上一篇文章有写

docker需要有nginx镜像

docker pull nginx

git有安装和配置github仓库,上一篇文章有写

2、打包镜像,最后面的 . 表是当前目录,web-demo表示镜像名称(项目本地编译好,然后通过git上传到平台,最后服务器根据git拉取项目文件。注意ignore文件去掉dist,因为我们不可能在服务器中编译)

docker build -t web-demo .

3、docker启动命令,有参考上面的jenkins,接name后面的是容器名称,最后面的是镜像名称

docker run -u root --rm -d -p 2222:80 --name web-demo web-demo
posted @ 2019-11-19 21:49  whitewall  阅读(360)  评论(0)    收藏  举报