zoukankan      html  css  js  c++  java
  • docker自己部署一个项目

    老祖宗的话说得好呀:实践出真知

    自己打个简单的镜像运行  遇到了一堆破问题

    学习docker主要在菜鸟教程  https://www.runoob.com/docker/docker-container-usage.html

    知识点壹

    第一个端口是真实机器的,第二个端口是docker的

    docker run -p 13138:13131 -d lastt

    ***************************************************************************************************

    知识点贰

    我们自己启动jar包时  喜欢java -jar

    但是这个命令放在docker文件里,总是发生启动后立即阿挂掉

    这是一篇博主的总结

    https://blog.csdn.net/do_it_/article/details/80014321

    最近在看docker如何让容器在启动时直接运行某些进程,后来发现Dockerfile可以在容器启动的时候指定容器运行命令。

    CMD指定,但是每个Dockerfile只能有一条CMD指令,如果指定了多条CMD指定,只有最后一条会被执行。

    于是就想了一个办法,在写了一个脚本,在脚本里面启动多个进程,在Dockerfile里运行这个脚本。

    最后证明这个方法是可行的,在实验过程中遇到一个问题,容器启动后会马上停止。

    经查阅资料:

    Docker容器同时只能管理一个进程,如果这个进程退出那么容器也就退出了,但这不表示容器只能运行一个进程(其他进程可在后台运行),但是要使容器不退出必须有一个前台执行的进程。

    解决方法:

    脚本中最后一个进程一定要用前台运行方式即在进程最后不加&(&表示后台运行),否则容器会退出。
    ————————————————
    版权声明:本文为CSDN博主「do_it_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/do_it_/article/details/80014321

    在学习docker的时候 遇到一个坑 就是当docker容器中没有前台运行的程序的时候 docker会认为这个容器没有工作内容会自动关闭这个容器

    解决方法:
    在写dockerfile的时候 记得留一个在前台执行的任务 特别是在做那种一般在后台运行的服务 如mysql这样的 需要让他在前台运行 mysqld.service

    这是个mysql的坑 自己还没碰到过

    ***************************************************************************************************

    说回部署

    https://blog.csdn.net/dhaiuda/article/details/82228186

    我是按照这个搭的,但是犯了个傻 我的项目端口是13131,怎么映射初始端口肯定也是这个呀,我又没在启动命令里指定别的端口,当时我为啥会想成docker启动的spring项目的端口会改

    真是脑抽

    解决了问题后发现,这个是顺畅的,

    我在解决这个问题的时候   用了https://www.jianshu.com/p/397929dbc27d这个博主的内容

    3. 编写Dockerfile文件

    # Docker image for springboot file run
    # VERSION 0.0.1
    # Author: eangulee
    # 基础镜像使用java
    FROM java:8
    # 作者
    MAINTAINER eangulee <eangulee@gmail.com>
    # VOLUME 指定了临时文件目录为/tmp。
    # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
    VOLUME /tmp 
    # 将jar包添加到容器中并更名为app.jar
    ADD demo-0.0.1-SNAPSHOT.jar app.jar 
    # 运行jar包
    RUN bash -c 'touch /app.jar'
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

    解释下这个配置文件:

    VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
    项目的 jar 文件作为 “app.jar” 添加到容器的
    ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source

    如果是第一次打包,它会自动下载java 8的镜像作为基础镜像,以后再制作镜像的时候就不会再下载了。

    Docker搭建MySQL主从集群

    这是爱宝贝写的一个docker部署mysql的一个文档,这是回头补的总结,第一次部署时候应该是noproblem的,很久没上服务器了

    又折腾了一哈docker 重启了  要重新启动这个主从服务,照搬的命令是不行的

    去掉了name

    docker run  --privileged=true -v /home/mysql/master-data:/var/lib/mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root -d xiaochunping/mysql-master

    去掉了name和link

    docker run  --privileged=true -v /home/mysql/slave-data:/var/lib/mysql -p 13307:3306  -e MYSQL_ROOT_PASSWORD=root -d xiaochunping/mysql-slave

  • 相关阅读:
    类间关系总结
    Android数据持久化技术
    广播
    活动
    Clean Code
    理解async特性
    async和await构成的异步方法
    ubuntu开启ssh服务
    lumen可以使用laravel-ide-helper
    laravel excel迁移到lumen
  • 原文地址:https://www.cnblogs.com/heroinss/p/11590765.html
Copyright © 2011-2022 走看看