Ich habe diese Docker-Compose-Konfigurationsdatei:

version: '3.0'
services:
  devbox:
    build:
      context: ./
      dockerfile: DevBox.DockerFile
    volumes:
      - "./html:/usr/src/app"
    ports:
      - "80:80"
      - "443:443"
    
  devmysql:
    build:
      context: ./
      dockerfile: MySQLDev.DockerFile
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 'secret'
    restart: always
    volumes:
            - "./mysql-data:/var/lib/mysql"
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:5.0.1
    restart: always
    environment:
      PMA_HOST: dev-mysql
      PMA_USER: root
      PMA_PASSWORD: secret
    ports:
      - "5000:80"
volumes:
  mysql-data: {}
  html: {}

Das Problem ist, dass das Volume auf der Devbox leer ist, auch wenn das HTML-Verzeichnis nicht leer ist.

Wenn ich renne:

docker run -d -v ./html:/usr/src/app testdocker_devbox

Es funktioniert wie erwartet.

Ich sehe kein Problem in meiner Konfigurationsdatei.

Meine DevBox.Docker-Datei lautet:

FROM ubuntu:latest
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -y
RUN apt-get upgrade -y
RUN apt-get install -y apache2 
RUN apt-get install -y php 
RUN apt-get install -y php-dev 
RUN apt-get install -y php-mysql 
RUN apt-get install -y libapache2-mod-php 
RUN apt-get install -y php-curl 
RUN apt-get install -y php-json 
RUN apt-get install -y php-common 
RUN apt-get install -y php-mbstring 
RUN apt-get install -y composer
RUN curl -s "https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh" | /bin/bash
RUN apt-get install -y software-properties-common
#RUN apt-get install -y php 7.2-phalcon
# COPY ./php.ini /etc/php/7.2/apache2/php.ini
# COPY ./slc.conf /etc/apache2/sites-available/slc.conf
# COPY ./apache2.conf /etc/apache2/apache2.conf
# RUN rm -rfv /etc/apache2/sites-enabled/*.conf
# RUN ln -s /etc/apache2/sites-available/slc.conf /etc/apache2/sites-enabled/slc.conf

CMD ["apachectl","-D","FOREGROUND"]
RUN a2enmod rewrite
EXPOSE 80
EXPOSE 443
3
Kerby82 28 Aug. 2020 im 22:34

3 Antworten

Beste Antwort

Ich fand heraus, dass das Problem darin bestand, dass sich die Anwendung auf / tmp meines Mac befand. Wenn ich einen Nicht / TMP-Pfad verwende, funktioniert dies. Dies sollte daran liegen, dass / tmp ein Link zu / private / tmp / ist.

1
Kerby82 8 Sept. 2020 im 17:49

Ändern Sie den lokalen Pfad ./html in

volumes:
  - "./html:/usr/src/app"

Zum absoluten Weg

0
Ryabchenko Alexander 3 Sept. 2020 im 07:39

Sie müssen die Datenträgerdeklaration an diesem Ende Ihrer docker-compose.yml entfernen. Dies wird für benannte Volumes verwendet, nicht für Volumes, die dem Hostverzeichnis Docker-Dokumentation zugeordnet sind .

# remove this part then it should be fine
volumes:
  mysql-data: {}
  html: {}
2
Cyril G. 2 Sept. 2020 im 03:54