Я пытаюсь создать образ для создания докеров для другого веб-сайта.
Все работает нормально, кроме моих томов.
Вот пример docker-compose.yml
:
version: '2'
services:
website:
build:
context: ./dockerfiles/
args:
MYSQL_ROOT_PASSWORD: mysqlp@ssword
volumes:
- ./logs:/var/log
- ./html:/var/www
- ./nginx:/etc/nginx
- ./mysql-data:/var/lib/mysql
ports:
- "8082:80"
- "3307:3306"
А вот и мой Dockerfile
:
FROM php:5.6-fpm
ARG MYSQL_ROOT_PASSWORD
RUN export DEBIAN_FRONTEND=noninteractive; \
echo mysql-server mysql-server/root_password password $MYSQL_ROOT_PASSWORD | debconf-set-selections; \
echo mysql-server mysql-server/root_password_again password $MYSQL_ROOT_PASSWORD | debconf-set-selections;
RUN apt-get update && apt-get install -y -q mysql-server php5-mysql nginx wget
EXPOSE 80 3306
VOLUME ["/var/www", "/etc/nginx", "/var/lib/mysql", "/var/log"]
Все работает хорошо, ожидайте, что все мои папки пусты в мои тома хоста. Я хочу видеть данные nginx conf и mysql в своих папках.
Что я делаю не так?
РЕДАКТИРОВАТЬ 1: На самом деле проблема в том, что я хочу, чтобы docker-compose создал том в моем каталоге докеров, если он не существует, и использовал этот том, если он существует, как это объясняется в https://stackoverflow.com/a/39181484. Но это не работает.
./logs
не создается? Я думал, что на данный момент это поведение docker-compose по умолчанию. - person jrbeverly   schedule 22.02.2017/var/log
. Как описано здесь, тома инициализируются при создании контейнера. Если базовый образ контейнера содержит данные в указанной точке подключения, эти существующие данные копируются в новый том при инициализации тома. (Обратите внимание, что это не применяется при монтировании каталога хоста.) - person jrbeverly   schedule 22.02.2017