docker-compose up时 mysql异常退出

来源:6-3 Docker Compose的安装和基本使用

积木_0004

2018-06-12

[vagrant@docker-host wordpress]$ docker-compose up

Creating network "wordpress_my-bridge" with driver "bridge"

Creating wordpress_mysql_1     ... done

Creating wordpress_wordpress_1 ... done

Attaching to wordpress_mysql_1, wordpress_wordpress_1

wordpress_1  | WordPress not found in /var/www/html - copying now...

mysql_1      | 2018-06-12T15:15:49.214408Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

mysql_1      | 2018-06-12T15:15:49.219883Z 0 [Note] mysqld (mysqld 5.7.22) starting as process 1 ...

mysql_1      | 2018-06-12T15:15:49.228980Z 0 [Note] InnoDB: PUNCH HOLE support available

mysql_1      | 2018-06-12T15:15:49.228999Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins

mysql_1      | 2018-06-12T15:15:49.229003Z 0 [Note] InnoDB: Uses event mutexes

mysql_1      | 2018-06-12T15:15:49.229007Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier

mysql_1      | 2018-06-12T15:15:49.229011Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3

mysql_1      | 2018-06-12T15:15:49.229015Z 0 [Note] InnoDB: Using Linux native AIO

mysql_1      | 2018-06-12T15:15:49.229554Z 0 [Note] InnoDB: Number of pools: 1

mysql_1      | 2018-06-12T15:15:49.229644Z 0 [Note] InnoDB: Using CPU crc32 instructions

mysql_1      | 2018-06-12T15:15:49.276262Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M

wordpress_1  | Complete! WordPress has been successfully copied to /var/www/html

mysql_1      | 2018-06-12T15:15:49.325437Z 0 [Note] InnoDB: Completed initialization of buffer pool

mysql_1      | 2018-06-12T15:15:49.326912Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().

mysql_1      | 2018-06-12T15:15:49.338243Z 0 [ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800!

mysql_1      | 2018-06-12 15:15:49 0x7f7ea6231740  InnoDB: Assertion failure in thread 140181929924416 in file ut0ut.cc line 942

mysql_1      | InnoDB: We intentionally generate a memory trap.

mysql_1      | InnoDB: Submit a detailed bug report to http://bugs.mysql.com.

mysql_1      | InnoDB: If you get repeated assertion failures or crashes, even

mysql_1      | InnoDB: immediately after the mysqld startup, there may be

mysql_1      | InnoDB: corruption in the InnoDB tablespace. Please refer to

mysql_1      | InnoDB: http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html

mysql_1      | InnoDB: about forcing recovery.

mysql_1      | 15:15:49 UTC - mysqld got signal 6 ;

mysql_1      | This could be because you hit a bug. It is also possible that this binary

mysql_1      | or one of the libraries it was linked against is corrupt, improperly built,

mysql_1      | or misconfigured. This error can also be caused by malfunctioning hardware.

mysql_1      | Attempting to collect some information that could help diagnose the problem.

mysql_1      | As this is a crash and something is definitely wrong, the information

mysql_1      | collection process might fail.

mysql_1      |

mysql_1      | key_buffer_size=8388608

mysql_1      | read_buffer_size=131072

mysql_1      | max_used_connections=0

mysql_1      | max_threads=151

mysql_1      | thread_count=0

mysql_1      | connection_count=0

mysql_1      | It is possible that mysqld could use up to

mysql_1      | key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 68195 K  bytes of memory

mysql_1      | Hope that's ok; if not, decrease some variables in the equation.

mysql_1      |

mysql_1      | Thread pointer: 0x0

mysql_1      | Attempting backtrace. You can use the following information to find out

mysql_1      | where mysqld died. If you see no messages after this, something went

mysql_1      | terribly wrong...

mysql_1      | stack_bottom = 0 thread_stack 0x40000

mysql_1      | mysqld(my_print_stacktrace+0x2c)[0x55efebbf61ec]

mysql_1      | mysqld(handle_fatal_signal+0x479)[0x55efeb524e59]

mysql_1      | /lib/x86_64-linux-gnu/libpthread.so.0(+0x110c0)[0x7f7ea5e0f0c0]

mysql_1      | /lib/x86_64-linux-gnu/libc.so.6(gsignal+0xcf)[0x7f7ea459bfff]

mysql_1      | /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f7ea459d42a]

mysql_1      | mysqld(+0x628387)[0x55efeb4fb387]

mysql_1      | mysqld(_ZN2ib5fatalD1Ev+0x12d)[0x55efebdc4c8d]

mysql_1      | mysqld(+0xf9ead1)[0x55efebe71ad1]

mysql_1      | mysqld(+0xf9f108)[0x55efebe72108]

mysql_1      | mysqld(_Z6fil_ioRK9IORequestbRK9page_id_tRK11page_size_tmmPvS8_+0x2b0)[0x55efebe7b230]

mysql_1      | mysqld(_Z13buf_read_pageRK9page_id_tRK11page_size_t+0xce)[0x55efebe301ee]

mysql_1      | mysqld(_Z16buf_page_get_genRK9page_id_tRK11page_size_tmP11buf_block_tmPKcmP5mtr_tb+0x4aa)[0x55efebdff34a]

mysql_1      | mysqld(_Z31trx_rseg_get_n_undo_tablespacesPm+0x143)[0x55efebda2e23]

mysql_1      | mysqld(+0x6274fb)[0x55efeb4fa4fb]

mysql_1      | mysqld(_Z34innobase_start_or_create_for_mysqlv+0x2f3d)[0x55efebd6fcdd]

mysql_1      | mysqld(+0xd69f63)[0x55efebc3cf63]

mysql_1      | mysqld(_Z24ha_initialize_handlertonP13st_plugin_int+0x4f)[0x55efeb56fbff]

mysql_1      | mysqld(+0xb138e6)[0x55efeb9e68e6]

mysql_1      | mysqld(_Z40plugin_register_builtin_and_init_core_sePiPPc+0x2f0)[0x55efeb9e9ad0]

mysql_1      | mysqld(+0x64a566)[0x55efeb51d566]

mysql_1      | mysqld(_Z11mysqld_mainiPPc+0xc71)[0x55efeb51f121]

mysql_1      | /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1)[0x7f7ea45892e1]

mysql_1      | mysqld(_start+0x2a)[0x55efeb51580a]

mysql_1      | The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains

mysql_1      | information that should help you find out what is causing the crash.

wordpress_mysql_1 exited with code 2


报错如上贴出的,通常造成这个的原因是什么呢? yml文件就是用的第六章的wordpress下的,只是把mysql的版本换成了5.7,就是image那一行改成了image: mysql:5.7

写回答

4回答

麦兜搞IT

2018-06-13

services:


wordpress:

image: wordpress

ports:

- 8080:80

depends_on:

- mysql

environment:

WORDPRESS_DB_HOST: mysql:3306

WORDPRESS_DB_PASSWORD: root

networks:

- my-bridge


0
0

麦兜搞IT

2018-06-13

我看了一下,我这边用你提供的compose yml文件是可以成功启动wordpress的,中间虽然也会报几次mysql连接错误,可能是因为当时mysql还没有完全启动成功,而这时间wordpress已经启动了。

这样,要不您试试在wordpress的service里增加depends on。例如, 这个是depends on redis,我们可以设置成depends on mysql, 就是等MySQL的container起来,再启动wordpress,您试试?

services:
 vote:
   image:
dockersamples
/examplevotingapp_vote:before
   depends_on:
     - redis
   deploy:
     replicas: 2


     update_config:
       parallelism: 2
       delay: 10s
       order: stop-first

0
0

积木_0004

提问者

2018-06-12

补充一下,同样pull下来的镜像,像上一节那样执行docker run就可以

docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql:5.7

docker run -d -e WORDPRESS_DB_HOST=mysql:3306 --link mysql -p 8080:80 wordpress

正常访问wordpress的网页,但是执行docker-compose up就会有报错

0
0

积木_0004

提问者

2018-06-12

贴一下docker-compose.yml


version: '3'


services:


  wordpress:

    image: wordpress

    ports:

      - 8080:80

    environment:

      WORDPRESS_DB_HOST: mysql:3306

      WORDPRESS_DB_PASSWORD: root

    networks:

      - my-bridge


  mysql:

    image: mysql:5.7

    environment:

      MYSQL_ROOT_PASSWORD: root

      MYSQL_DATABASE: wordpress

    volumes:

      - mysql-data:/var/lib/mysql

    networks:

      - my-bridge


volumes:

  mysql-data:


networks:

  my-bridge:

    driver: bridge


0
0

系统学习Docker 践行DevOps理念

无论你是开发、测试还是运维,Docker都是你的必备技能。

3297 学习 · 1895 问题

查看课程