Продолжайте творить и ускорять рост! Это мое участие в «Новом плане Nuggets Daily». · 10 Ежемесячный конкурс статей」принадлежащий27небо,Нажмите, чтобы просмотреть подробности мероприятия
Официальная документация:docs.docker.com/compose/com…
В основном разделен на три слоя
# первый этаж Версия, соответствующая версии докера, обратно совместима. Последняя версия 3.9.
version: '3.9'
# второй этаж Служить
services:
# Служитьодин web:
# Служить Конфигурация
images:
bulid:
ports:
network:
...
redis:
...
mysql:
...
# третий этаж Другая конфигурация, такая как: сеть, объем данных, глобальная конфигурация.
networks:
frontend:
backend:
volumes:
db-data:
configs:
На основе трех вышеуказанных слоев обратитесь к официальному примеру.
version: "3.9"
services:
redis:
image: redis:alpine
ports:
- "6379"
networks:
- frontend
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
db:
image: postgres:9.4
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
deploy:
placement:
max_replicas_per_node: 1
constraints:
- "node.role==manager"
vote:
image: dockersamples/examplevotingapp_vote:before
ports:
- "5000:80"
networks:
- frontend
depends_on:
- redis
deploy:
replicas: 2
update_config:
parallelism: 2
restart_policy:
condition: on-failure
result:
image: dockersamples/examplevotingapp_result:before
ports:
- "5001:80"
networks:
- backend
depends_on:
- db
deploy:
replicas: 1
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
worker:
image: dockersamples/examplevotingapp_worker
networks:
- frontend
- backend
deploy:
mode: replicated
replicas: 1
labels: [APP=VOTING]
restart_policy:
condition: on-failure
delay: 10s
max_attempts: 3
window: 120s
placement:
constraints:
- "node.role==manager"
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints:
- "node.role==manager"
networks:
frontend:
backend:
volumes:
db-data:
Официальная документация:docs.docker.com/samples/wor…
Используется для хранения файлов проекта.
mkdir -p /test/wordpress
cd /test/wordpress
Создайте docker-compose.yml.документ
vim docker-compose.yml
Введите следующее
version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
wordpress_data: {}
# Начать на переднем плане
docker-compose up
# За кулисамизапускать
docker-compose up -d
Начните на переднем плане и остановите, нажав Ctrl+c.
Фоновый запуск успешен
IP браузера: 8000, например у меня 192.168.227.3:8000
При каждом доступе обновляйте данные в Redis и отображайте их во внешнем интерфейсе.
/**
* @author ber
* @version 1.0
* @date 21/8/30 15:12
*/
@RestController
public class HelloController {
@Autowired
StringRedisTemplate redisTemplate;
@GetMapping("/")
public String hello() {
final Long count = redisTemplate.opsForValue().increment("count");
return "Hello ber, thanks. views: " + count;
}
}
redisизipпрямой Конфигурациястановитьсяredis
server:
port: 8001
spring:
redis:
host: redis
FROM java:8
COPY *.jar /app.jar
CMD ["--server-port=8001"]
EXPOSE 8001
ENTRYPOINT ["java", "-jar", "/app.jar"]
version: "3.9"
services:
berapp:
image: berapp
build: .
depends_on:
- redis
ports:
- "8001:8001"
stdin_open: true
tty: true
redis:
image: "redis:alpine"
mkdir /test/berapp
cd /test/berapp
Упакуйте jar проекта、Dockerfile、docker-compose.ymlзагрузить в/test/berapp
# Бег на переднем плане
docker-compose up
# За кулисамибегать
docker-compose up -d
# Попробуйте запустить его еще раз --build: создать образ Служить перед запуском контейнера.
docker-compose up --build
Если слова «выход» или «ошибка» не появляются, это означает, что операция прошла успешно.
доступ Попробуйте эффект。Я здесьпрямойпроходитьcurl
инструкциядоступ Понятно,Также можно использовать браузер через доступ к порту ip:8001.