Centos 7 Docker Compose 编排/处理hosts问题

之前使用docker命令进行部署,发现docker里的hosts跟centos里的hosts不一致,导致代码里通过内网域名连接Mysql出了问题,网上查了一下,有4个办法

Docker修改hosts方法

最终采用了Docker-Comose的方法

具体安装和原理见:

docker-compose详解

Docker-compose使用全解

 

Spring boot 里的Docker file

# 基于openjdk 镜像
FROM java:7
# 声明需要暴露的端口
EXPOSE 8081
# 将本地文件夹挂在到当前容器,指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。
# 这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp
# 复制文件到容器,表示把文件拷入docker ,并改名成 app.jar
ADD ltfxpos.jar app.jar
# 配置容器启动后执行的命令,
RUN sh -c 'touch /app.jar'
#JAVA_OPTS中可以加一些参数,如果配置了多环境,可以加"-Dspring.profiles.active=prod"
ENV JAVA_OPTS=""
#表示使用指定命令在镜像运行时执行,启动jar。表示使用指定命令在镜像运行时执行,启动jar。
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

Pom文件

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.7</java.version>
        <docker.image.prefix>springboot</docker.image.prefix>
    </properties>

           <!-- Docker maven plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>

                <!--将插件绑定在某个phase执行-->
                <executions>
                    <execution>
                        <id>build-image</id>
                        <!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>

                <configuration>
                    <!--指定生成的镜像名-->
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!--jar 包所在的路径  此处配置的 即对应 target 目录-->
                            <directory>${project.build.directory}</directory>
                            <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>

                    <!--指定标签-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>

                    <!--指定远程 docker api地址-->
                    <dockerHost>http://192.168.1.101:2375</dockerHost>

                    <!-- 以下两行是为了docker push到DockerHub使用的。 -->
                    <!--                    <serverId>docker-hub</serverId>-->
                    <!--                    <registryUrl>https://index.docker.io/v1</registryUrl>-->

                </configuration>
            </plugin>

这样编译后,直接推送到server上

创建Docker-Compose.yml文件

mkdir ltfxpos
cd ltfxpos
//创建文件
touch  docker-compose.yml
//编辑
vim  docker-compose.yml

Docker-Compose.yml文件内容,注意空格位置

version: '3'
services:
        
  ltfxpos:
    image: uhub.service.ucloud.cn/ltfxpos/ltfxpos
    container_name: ltfxpos
    restart: always
    privileged: true
    ports:
      - "8081:8081"
    networks:
      - "net"
    extra_hosts:
      - "udb-fxlt-m-1.xianlife.top:10.19.68.63"
      - "cache-fxlt.xianlife.top:10.19.140.232"
    volumes:
      - "/data/logs/ltfxpos:/data/work/appdata/ltfxpos/logs"
 
networks:
  net:
    driver: bridge

extra_hosts 内网域名:ip对应

volumes 文件夹挂载,冒号左边是服务器的路径(可以自己定义),右边是docker 容器里对应的路径。相当于右边建了个左边实际文件夹的快捷方式

 

执行

 docker-compose up -d

报错了

端口被占用,找出并关闭对应的Container

// 列出docker container
docker container ls

// 停止docker contaier
docker stop xxxx

重新执行 docker-compose up -d,ok

//重新执行
docker-compose up -d


// 查看日志
docker logs 811f2d775555

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页