我的 docker-compose lamp 堆栈不再工作:“ContainerConfig”错误

问题描述 投票:0回答:1

我今天更新了我的服务器、docker 容器和镜像,但现在它无法正常工作。也许更新改变了我们编写 docker-compose.yaml 文件的方式?我有一段时间没有改变它。在这里:

version: "3.5"
services:
  php:
    build: 
      context: './php/'
      args:
       PHP_VERSION: ${PHP_VERSION}
    networks:
      - backend
    volumes:
      - ${PROJECT_ROOT}:/var/www/html/
      - /home/pi/docker-lamp-stack/baikal:/var/www/baikal/
    environment:
      MYSQL_HOST: "${DB_HOST}"
      MYSQL_DATABASE: "${DB_NAME}"
      MYSQL_USER: "${DB_USERNAME}"
      MYSQL_PASSWORD: "${DB_PASSWORD}"
      INSTANCE_NAME: "${INSTANCE_NAME}"
    container_name: ${DOCKER_IMAGE_PREFIX}php
    restart: unless-stopped
  apache:
    build:
      context: './apache/'
      args:
        APACHE_VERSION: ${APACHE_VERSION}
    depends_on:
      - php
    networks:
      - frontend
      - backend
    ports:
      - "443:443"
    volumes:
      - ${PROJECT_ROOT}:/var/www/html/
      - /etc/letsencrypt:/etc/letsencrypt/
      - /home/pi/docker-lamp-stack/baikal:/var/www/baikal/
    container_name: ${DOCKER_IMAGE_PREFIX}apache
    restart: always 
  mysql:
    image: mysql:${MYSQL_VERSION}
    command: 
      - mysqld
    restart: unless-stopped
    ports:
      - "${EXTERNAL_MYSQL_PORT}:3306"
    volumes:
            - ./mysql/data/:/var/lib/mysql
    networks:
      - backend
    environment:
      TZ: "${TZ}"
      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
      MYSQL_DATABASE: "${DB_NAME}"
      MYSQL_USER: "${DB_USERNAME}"
      MYSQL_PASSWORD: "${DB_PASSWORD}"
    container_name: ${DOCKER_IMAGE_PREFIX}mysql
  phpmyadmin:
    image: phpmyadmin:${PMA_VERSION}
    ports:
      - ${EXTERNAL_PMA_PORT}:80
    networks:
      - backend
      - frontend
    environment:
      - PMA_HOST=mysql
    restart: unless-stopped
    container_name: ${DOCKER_IMAGE_PREFIX}pma
networks:
  frontend:
    name: ${DOCKER_IMAGE_PREFIX}frontend
  backend:
    name: ${DOCKER_IMAGE_PREFIX}backend
volumes:
    data:

一些环境变量是

PHP_VERSION=8.2
MYSQL_VERSION=oracle
APACHE_VERSION=2
PMA_VERSION=latest

错误是

ERROR: for php 'ContainerConfig'

ERROR: for phpmyadmin  'ContainerConfig'
Traceback (most recent call last):
  File "/usr/local/bin/docker-compose", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.9/dist-packages/compose/cli/main.py", line 81, in main
    command_func()
  File "/usr/local/lib/python3.9/dist-packages/compose/cli/main.py", line 203, in perform_command
    handler(command, command_options)
  File "/usr/local/lib/python3.9/dist-packages/compose/metrics/decorator.py", line 18, in wrapper
    result = fn(*args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/compose/cli/main.py", line 1186, in up
    to_attach = up(False)
  File "/usr/local/lib/python3.9/dist-packages/compose/cli/main.py", line 1166, in up
    return self.project.up(
  File "/usr/local/lib/python3.9/dist-packages/compose/project.py", line 697, in up
    results, errors = parallel.parallel_execute(
  File "/usr/local/lib/python3.9/dist-packages/compose/parallel.py", line 108, in parallel_execute
    raise error_to_reraise
  File "/usr/local/lib/python3.9/dist-packages/compose/parallel.py", line 206, in producer
    result = func(obj)
  File "/usr/local/lib/python3.9/dist-packages/compose/project.py", line 679, in do
    return service.execute_convergence_plan(
  File "/usr/local/lib/python3.9/dist-packages/compose/service.py", line 579, in execute_convergence_plan
    return self._execute_convergence_recreate(
  File "/usr/local/lib/python3.9/dist-packages/compose/service.py", line 499, in _execute_convergence_recreate
    containers, errors = parallel_execute(
  File "/usr/local/lib/python3.9/dist-packages/compose/parallel.py", line 108, in parallel_execute
    raise error_to_reraise
  File "/usr/local/lib/python3.9/dist-packages/compose/parallel.py", line 206, in producer
    result = func(obj)
  File "/usr/local/lib/python3.9/dist-packages/compose/service.py", line 494, in recreate
    return self.recreate_container(
  File "/usr/local/lib/python3.9/dist-packages/compose/service.py", line 612, in recreate_container
    new_container = self.create_container(
  File "/usr/local/lib/python3.9/dist-packages/compose/service.py", line 330, in create_container
    container_options = self._get_container_create_options(
  File "/usr/local/lib/python3.9/dist-packages/compose/service.py", line 921, in _get_container_create_options
    container_options, override_options = self._build_container_volume_options(
  File "/usr/local/lib/python3.9/dist-packages/compose/service.py", line 960, in _build_container_volume_options
    binds, affinity = merge_volume_bindings(
  File "/usr/local/lib/python3.9/dist-packages/compose/service.py", line 1548, in merge_volume_bindings
    old_volumes, old_mounts = get_container_data_volumes(
  File "/usr/local/lib/python3.9/dist-packages/compose/service.py", line 1579, in get_container_data_volumes
    container.image_config['ContainerConfig'].get('Volumes') or {}
KeyError: 'ContainerConfig'

仅启动apache和mysql。

  • 我的docker版本是26.0.0
  • 我的docker-compose版本是1.29.2
  • 更改 PHP 和/或 PMA 版本不会改变问题。

有人知道发生了什么吗? 谢谢

php docker docker-compose lamp
1个回答
0
投票

如果我理解正确的话,预计在

phpmyadmin
中会有持久的数据量。

因此您的 docker-compose.yaml 文件将定义卷:

version: "3.5"
services:
  php:
    build: 
      context: './php/'
      args:
       PHP_VERSION: ${PHP_VERSION}
    networks:
      - backend
    volumes:
      - ${PROJECT_ROOT}:/var/www/html/
      - /home/pi/docker-lamp-stack/baikal:/var/www/baikal/
    environment:
      MYSQL_HOST: "${DB_HOST}"
      MYSQL_DATABASE: "${DB_NAME}"
      MYSQL_USER: "${DB_USERNAME}"
      MYSQL_PASSWORD: "${DB_PASSWORD}"
      INSTANCE_NAME: "${INSTANCE_NAME}"
    container_name: ${DOCKER_IMAGE_PREFIX}php
    restart: unless-stopped
  ...
  ...
  phpmyadmin:
    image: phpmyadmin:${PMA_VERSION}
    ports:
      - ${EXTERNAL_PMA_PORT}:80
    networks:
      - backend
      - frontend
    environment:
      - PMA_HOST=mysql
    restart: unless-stopped
    container_name: ${DOCKER_IMAGE_PREFIX}pma
networks:
  frontend:
    name: ${DOCKER_IMAGE_PREFIX}frontend
  backend:
    name: ${DOCKER_IMAGE_PREFIX}backend
volumes:
    - data:
    - phpmyadmin_data:/var/lib/phpmyadmin

否则,您可以将其留空,如

volumes:
    - data:
    - phpmyadmin_data:
© www.soinside.com 2019 - 2024. All rights reserved.