Мой веб-интерфейс включает witch docker-compose.yml, но не мой dockerfile

#docker #docker-compose #dockerfile #prestashop

#docker #docker-compose #dockerfile #prestashop

Вопрос:

Я работаю над развертыванием образа Prestashop, но когда я использую docker-compose up -d --build его, он работает. У меня есть доступ к странице установки Prestashop. Но когда я делаю build -t prestashop:latest . это, чтобы собрать его и использовать docker run -d --name prestashop -p 80:80 prestashop:latest для его запуска. Я попадаю на домашнюю страницу apache. Заранее благодарю вас

Dockerfile ИЗ ubuntu: 18.04

 RUN 
sed -i 's/# (.*multiverse$)/1/g' /etc/apt/sources.list amp;amp; 
apt-get update amp;amp; 
apt-get -y upgrade amp;amp; 
apt-get install -y build-essential amp;amp; 
apt-get install -y software-properties-common amp;amp; 
apt-get install -y byobu curl git htop man unzip vim wget amp;amp; 
rm -rf /var/lib/apt/lists/*
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get upgrade
RUN apt-get install -y apache2 libapache2-mod-php
RUN apt install -y php unzip
RUN apt-get install -y php-cli php-common php-mbstring php-gd php-intl php-xml php-mysql php-zip php-curl php-xmlrpc
COPY . /var/www/html:rw
COPY ./config/presta.conf /etc/apache2/sites-available/000-default.conf
RUN a2enmod rewrite

WORKDIR /var/www/html

EXPOSE 80
CMD apachectl -D FOREGROUND
 

docker-compose.yml

 version: '2'
services:
    
    mysql:
        image: mysql:5.7
        env_file:
        - .env
        volumes:
        - ./.docker/data/mysql/:/var/lib/mysql
        - ./.docker/logs/mysql/:/var/log/mysql
        ports:
        - "3306:3306"
        container_name: presta_mysql
    
    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        ports:
        -  8080:80
        env_file:
        - .env
        environment:
            PMA_HOST: mysql
            VIRTUAL_HOST: phpmyadmin.presta.local  
        container_name: presta_phpmyadmin

    app_dev:
        container_name: presta_app
        build: .
        environment:
        - VIRTUAL_HOST=app.presta.local
        volumes : 
        - ./:/var/www/html:rw
        restart: always
        ports:
        - 80:80
        links:
        - "mysql:presta_mysql"
 

Комментарии:

1. COPY Инструкция вашего изображения копируется в каталог контейнера с именем /var/www/html:rw . Вы не замечаете этого при настройке компоновки, потому что у вас есть volumes: возможность монтировать другой контент /var/www/html , а :rw суффикс используется в качестве опции.

2. Спасибо за ваш ответ, но я не понимаю, что мне нужно делать. Чтобы решить эту проблему.

3. Попробуйте запустить docker run --rm -it prestashop bash и в интерактивной оболочке, которая дает вам, ls /var/www . Какие имена каталогов существуют?

Ответ №1:

Прежде чем углубляться в это, я рекомендую вам прочитать документацию docker. Есть несколько основных тем, которые вам нужно сначала понять: https://docs.docker.com/storage/volumes /

введите описание изображения здесь

 version: '2'
services:
  mysql:
    image: mysql:5.7
    env_file: 
      - .env
    volumes:
      - "./.docker/data/mysql/:/var/lib/mysql:rw"
      - "./.docker/logs/mysql/:/var/log/mysql:rw"
    ports:
      - "3306:3306"
    container_name: presta_mysql

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      -  "8080:80"
    env_file:
      - .env
    environment:
        PMA_HOST: mysql
        VIRTUAL_HOST: phpmyadmin.presta.local  
    container_name: presta_phpmyadmin

app_dev:
    container_name: presta_app
    build: .
    environment:
      - VIRTUAL_HOST=app.presta.local
    volumes : 
      - "./:/var/www/html:rw"
    restart: always
    ports:
      - "80:80"
    links:
      - "mysql:presta_mysql"