美文网首页
docker容器实验记录

docker容器实验记录

作者: Wu杰语 | 来源:发表于2021-03-29 21:17 被阅读0次

    实践出真知,构建一个springboot容器访问mysql容器实验,不动手的话是不知道要踩多少坑的。

    springboot程序

    自己写一个springboot程序,使用mybatis,其中application.properties配置如下:

    management.endpoints.web.exposure.include=*
    spring.output.ansi.enabled=ALWAYS
    
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://mysql0:3306/test?serverTimezone=GMT%2B8
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.hikari.maximumPoolSize=5
    spring.datasource.hikari.minimumIdle=5
    spring.datasource.hikari.idleTimeout=600000
    spring.datasource.hikari.connectionTimeout=30000
    spring.datasource.hikari.maxLifetime=1800000
    

    mapper使用

    @Mapper
    public interface MeMapper {
        @Select("select * from test.me")
        @Results(id = "allmes",
                value = {
                    @Result(property = "moc", column = "moc", jdbcType = JdbcType.VARCHAR),
                    @Result(property = "state", column = "state", jdbcType = JdbcType.VARCHAR)
                }
        )
        List<Me> getAllMe();
    }
    

    两个坑:

    1. 写完编译jar包,自己用java -jar xx.jar跑一下,看能否跑起来。
    2. 这里需要注意的是由于采用Dockerfile的时候使用镜像如果使用8,这里编译安装jdk的时候就需要安装jdk8

    Dockerfile如下:

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

    容器操作

    数据库容器

    首先需要掌握一个基础知识,容器A如果要能直接访问容器B,在同一主机下,有--link方式,更通用的方式是创建网桥。

    docker network create network-sql   //创建docker网桥
    
    docker  pull mysql
    docker run -d -p 1234:3306 -v /home/mysql01/conf:/etc/mysql/conf.d -v /home/mysql01/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 --netwrok network-sql mysql:latest
    

    注意docker run命令,使用--network network-sql就指定使用自己创建的网桥network-sql,其它容器也同样的run的时候指定network为network-sql,就可以在容器中使用容器名来ping通mysql容器。


    image.png

    这里有个坑,需要将root用户设置一下可以在外部访问
    https://blog.csdn.net/m0_37460012/article/details/90290148
    进入到容器中操作,而且发现设置的密码无效,需要重新设置一下密码。
    https://download.csdn.net/download/weixin_38732343/13684282?utm_source=iteye_new

    springboot容器
    docker build -t springbootmes .    // 构造镜像
    docker run -d --name springbootmes0 -p 8089:8080 --network network-sql springbootmes:latest
    

    在mysql中创建好表,插入数据,然后操作一下访问8089端口:


    image.png

    小结

    技术是实践型的,通过动手和分享是最好的两种学习方式。对于docker的学习,要明白底层原理实际上是namespace操作、网络上网桥、veth pair、vxlan知识等,只有通过动手才能理解的比较深入。

    相关文章

      网友评论

          本文标题:docker容器实验记录

          本文链接:https://www.haomeiwen.com/subject/wrqihltx.html