- /etc/letsencrypt/live/domen.ru/:/etc/letsencrypt/live/domen.ru/
services:
nginx:
# ...
volumes:
# ...
- /etc/letsencrypt:/etc/letsencrypt
live/domen.ru
лежат не сами сертификаты, а линки на файлы двумя уровнями выше. Линки вы и видите, но указывают они на недоступные файлы. Правильно понимаю, что docker можно также спокойно использовать локально на windows?Правильно.
Как вы локально разворачиваете докер ?Под Mac или Windows cкачать Docker Desktop.
docker-compose.yml
вашего проекта и docker-compose up
А потом заходить внутрь контейнеров, или запускать дополнительные временные – со всякими git clone
, composer install
, npm i
, mysql -p${MYSQL_ROOT_PASSWORD} < database_init.sql
и пр.При разворачивании проекта через docker, создается некая виртуализация.Не совсем. Docker не виртуализация, а контейнеризация. Отсутствует виртуальная машина, в отличие от, например, VirtualBox. На бытовом уровне, есть некие изолированные виртуальные коробки-контейнеры, из которых наружу торчит, может, порт. И друг дружку эти коробки видят как компы в локальной сети.
Как тогда работать с проектом через IDE ? Если все окружение проекта на linux, а мы работаем на windows, как вообще люди работают через IDE в таких случаях ?Как вариант, работать как с удалённым Linux сервером. Подключаться к нему по SSH, тот же VS Code умеет через расширение Remote-SSH.
docker cp ./local.file containerName://var/www/remote.file
docker build
(док) создаёт новый image
(образ) В вашем примере с тегом python-barcode
docker run
запускает из образа контейнер. Можно и не один, а несколько, даже параллельно. В вашем примере имя для него сгенерится автоматом, какая-нибудь смешная комбинация двух слов. Контейнер может работать, останавливаться, перезапускаться. Можно удалить контейнер. Контейнер не изменяет образ, из которого создан – он «накатывает» свою деятельность поверх, в новых слоях.базовый FROM образ -- образ с доп. слоями = ваш новый образ -- контейнер и изменения -- образ с изменениями
все на php7.3, mysql 5.7, nginx
location /project-42 { root /projects/project-42; ... }
### или целый блок
server {
listen 80;
server_name project42.dev;
...
}
nginx:
volumes:
- "/freelance/projects/Project-0/:/var/www/project0"
- "/freelance/projects/Project-42/:/var/www/project42"
# ...
php-fpm:
volumes:
# то же самое сюда
2) Как проектам дать не localhost:8080, а нормальный урл типа project.dev?
docker-compose.yml
пропишите вместо 8080:80
— 80:80
, а в локальном файле hosts допишите 127.0.0.1 project.dev project42.dev
docker network connect myapp_default mysql
mysql
, как и требовалось. docker pull nginx
docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx
# предполагается, что в локальной папке /some/content
# у вас лежит какой-нибудь index.html
project_files
, который потом можно подключать к php через --volumes-from project_files
FROM ubuntu
RUN apt-get update && apt-get install -y git
RUN mkdir /root/.ssh/
COPY id_rsa /root/.ssh/id_rsa
# Add bitbuckets key
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts
# CLone repo
RUN git clone git@bitbucket.org:username/projectname.git /project_files
# Create volume
VOLUME /project_files
id_rsa
и билдите docker build -t myproject/files .
и создаёте контейнер docker create --name project_files myproject/files /bin/true
docker pull composer/composer
Надо его запустить и установить зависимости вашего проекта, подключив тот контейнер с файлами проекта:docker run --rm --volumes-from project_files -w "/project_files" composer install
docker run \
--name myproject_php \
--volumes-from project_files \
php:5-fpm