#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"