使用官方docker-compose.yml启动异常(cat exited with code 139)

kr98yfug  于 2021-11-29  发布在  Java
关注(0)|答案(1)|浏览(516)

docker版本:

Docker version 19.03.13, build 4484c46d9d

docker-compose版本:

docker-compose version 1.17.1, build unknown

前置条件:

  1. 将官方docker-compose.yml中的network_mode: "host"注解掉
  2. docker-compose up

现象:

  1. mysql可以正常启动
  2. mysql cat库中有表
  3. mysql端口外部可访问
  4. cat服务容器不能启动,日志:cat exited with code 139

docker-compose.yml


# mail@dongguochao.com

version: '2.2'

services:
  cat:
    image: rolesle/cat:0.0.1
    container_name: cat

    ######## build from Dockerfile ###########
    # build:
    #  context: ../
    #  dockerfile: ./docker/Dockerfile
    ######## End -> build from Dockerfile ###########

    environment:
      # if you have your own mysql, config it here, and disable the 'mysql' config blow
      - MYSQL_URL=cat-mysql # links will maintain /etc/hosts, just use 'container_name'
      - MYSQL_PORT=3307
      - MYSQL_USERNAME=root
      - MYSQL_PASSWD=
      - MYSQL_SCHEMA=cat
      # 必须设置成你的机器IP地址
      - SERVER_IP=172.22.58.202
    working_dir: /app
    volumes:
      # 默认127.0.0.1,可以修改为自己真实的服务器集群地址
      - "./client.xml:/data/appdatas/cat/client.xml"
      # 默认使用环境变量设置。可以启用本注解,并修改为自己的配置

# - "./datasources.xml:/data/appdatas/cat/datasources.xml"

    command: /bin/sh -c 'chmod +x /datasources.sh && /datasources.sh && catalina.sh run'
    links:
      - mysql
    depends_on:
      - mysql
    ports:
      - "8080:8080"
      - "2280:2280"
    #network_mode: "host"

  # disable this if you have your own mysql
  mysql:
    container_name: cat-mysql
    image: mysql:5.7.22
    # expose 33306 to client (navicat)
    ports:
       - 3307:3306
    volumes:
      # change './docker/mysql/volume' to your own path
      # WARNING: without this line, your data will be lost.
      - "./mysql/volume:/home/syl/cat/volume/mysql"
      # 第一次启动,可以通过命令创建数据库表 :
      # docker exec 容器id bash -c "mysql -uroot -Dcat < /init.sql"
      - "./CatApplication.sql:/init.sql"
    command: mysqld -uroot --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --init-connect='SET NAMES utf8mb4;' --innodb-flush-log-at-trx-commit=0
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: "true"
      MYSQL_DATABASE: "cat"
      MYSQL_USER: "root"
      MYSQL_PASSWORD: ""
mrphzbgm

mrphzbgm1#

是在windows docker desktop中跑的吧,
microsoft/WSL#4694 (comment)
https://docs.microsoft.com/en-us/windows/wsl/wsl-config#configure-global-options-with-wslconfig

相关问题