2
votes

docker services.web.working_dir contient un type non valide, il doit s'agir d'une chaîne

J'essaye de mettre en place phpserver via docker-compose. J'ai mis 3 fichiers dans mon répertoire de travail.

.env docker-compose.yml Dockerfile

.env

ERROR: The Compose file '.\docker-compose.yml' is invalid because:
services.web.working_dir contains an invalid type, it should be a string
services.composer.volumes contains an invalid type, it should be a string
services.web.volumes contains an invalid type, it should be a string
services.db.volumes contains an invalid type, it should be a string

docker-compose.yml

version: '3'

docker-compose up --build

et Dockerfile

FROM php:7.2-apache

RUN docker-php-ext-install \
     pdo_mysql \
     && a2enmod
     rewrite

Mais après avoir essayé d'exécuter

services:
  web:
    build: .
    environment:
      - APACHE_RUN_USER=www-data
    volumes:
      - ${APP_PATH_HOST}: ${APP_PATH_CONTAINER}
    ports:
      - 8080:80
    working_dir:
      - ${APP_PATH_CONTAINER}
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    volumes:
      - ${DB_PATH_HOST}: /var/lib/mysql

  adminer:
    image: adminer
    restart: always
    ports:
      - 6080:8080
  composer:
    image: composer:1.7
    volumes:
      - ${APP_PATH_HOST}: ${APP_PATH_CONTAINER}
    working_dir: ${APP_PATH_CONTAINER}
    command: composer install

j'ai le problème

##PATHS

DB_PATH_HOST=./databases
APP_PATH_HOST=./blog
APP_PATH_CONTAINER=/var/www/html/
MYSQL_ROOT_PASSWORD=123456

J'ai essayé de changer la version du fichier docker-compose en 2 - ne fonctionne pas J'ai essayé d'utiliser le même problème "" et "".

Je veux exécuter mon serveur avec succès.


0 commentaires

3 Réponses :


1
votes
version: "3.3"

services:
  web:
    build: .
    environment:
      - APACHE_RUN_USER=www-data
    volumes:
      - "${APP_PATH_HOST}: ${APP_PATH_CONTAINER}"
    ports:
      - 8080:80
    working_dir: ${APP_PATH_CONTAINER}
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    volumes:
      - "${DB_PATH_HOST}:/var/lib/mysql"

  adminer:
    image: adminer
    restart: always
    ports:
      - 6080:8080
  composer:
    image: composer:1.7
    volumes:
      - "${APP_PATH_HOST}: ${APP_PATH_CONTAINER}"
    working_dir: ${APP_PATH_CONTAINER}
    command: composer install
What you used for working_dir was a list. It needed a string.

2 commentaires

Comme je suis triste avant d'utiliser "" mais le problème n'a pas disparu.


Utilisez la version dans ma réponse exactement comme elle est. Cela fonctionne et votre problème disparaîtra



0
votes

Je souhaite me connecter d'administrateur à postgres version: '3'

SQLSTATE[08006] [7] FATAL: password authentication failed for user "root"

et j'ai l'erreur suivante.

services:
  web:
    build: .
    environment:
      - APACHE_RUN_USER=www-data
    volumes:
      - ./blog:/var/www/html/
    ports:
      - 8080:80
    working_dir: /var/www/html/
  db:
    image: postgres
    restart: always
    environment:
      POSTGRES_PASSWORD: kisphp
      POSTGRES_USER: root
      POSTGRES_DB: kisphp
    ports:
      - "5432:5432"
    volumes:
      - ./postgres:/var/lib/postgresql/data
  adminer:
    image: adminer
    restart: always
    ports:
      - "6080:8080"


2 commentaires

Ce n’est pas vraiment une réponse. Peut-être pouvez-vous poser une nouvelle question? et vous devriez également donner plus de détails sur l'erreur: quand exactement cela se produit-il par exemple. Je vois que vous définissez votre mot de passe ROOT à un seul endroit pour la base de données. Où le définissez-vous pour l'application qui se connecte à la base de données?


Je remarque maintenant que vous avez également changé la base de données :) Veuillez poser une question différente avec ces données



6
votes

Les deux formats suivants fonctionnent:

Format # 1

environment:
  - MYSQL_ROOT_PASSWORD=rootpassword

Format # 2

environment:
  MYSQL_ROOT_PASSWORD: rootpassword


0 commentaires