docker-compose.yml文件中如何指定已经存在的 volume

来源:6-3 Docker Compose的安装和基本使用

Louis0o

2019-04-21

Dockerfile:

FROM python:2.7
# part 1
# LABAL
# ENV
COPY . /var/www/demo275
WORKDIR /var/www/demo275

# part 2 install dependency of httpd and python
RUN pip install --upgrade pip
RUN pip install -r requirements.txt


EXPOSE 8000
ENTRYPOINT ["python", "manage.py", "runserver", "0.0.0.0:8000"]

docker-compose.yml:

version: '3'
  
services:

  app:
    build: .
    ports:
      - 80:8000
    depends_on:
      - mysql-security
    environment:
      MYSQL_SECURITY_ENV_HOST: mysql-security
      MYSQL_SECURITY_ENV_MYSQL_DATABASE: demo
      MYSQL_SECURITY_PORT_3306_TCP_PORT: 3306
      MYSQL_SECURITY_ENV_MYSQL_ROOT_PASSWORD: root
    networks:
      - my-bridge

  mysql-security:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: demo
    volumes:
      - mysql-security:/var/lib/mysql
    networks:
      - my-bridge

volumes:
  mysql-security:

networks:
  my-bridge:
    driver: bridge

我本地有一个mysql-security的volume.

wuhaodeMacBook-Pro:demo275 wuhao$ docker volume ls
DRIVER              VOLUME NAME
local               mysql-security

我想在docker-compose.yml文件中指定我本地已经有的volume(mysql-security).所以写成
volumes:
- mysql-security:/var/lib/mysql

docker-compose up -d后,查看volume:

wuhaodeMacBook-Pro:demo275 wuhao$ docker-compose up -d
Creating network "demo275_my-bridge" with driver "bridge"
Creating volume "demo275_mysql-security" with default driver
Creating demo275_mysql-security_1 ... done
Creating demo275_app_1            ... done
wuhaodeMacBook-Pro:demo275 wuhao$ docker volume ls
DRIVER              VOLUME NAME
local               demo275_mysql-security
local               mysql-security

生成了新的volume( demo275_mysql-security).
就是说没有使用我本地已经存在的mysql-security。

求教,我应该怎样去设置?

写回答

2回答

麦兜搞IT

2019-04-21

version: "3.7"services:
  db:
    image: postgres
    volumes:
      - data:/var/lib/postgresql/datavolumes:
  data:
    external: true


0
2
Louis0o
搞定! 谢谢老师!
2019-04-22
共2条回复

麦兜搞IT

2019-04-21

您这个意思不是要创建新的么

volumes:
  mysql-security:


0
1
Louis0o
那要如何设置,才能使用已经存在的volume呢,
2019-04-21
共1条回复

系统学习Docker 践行DevOps理念

无论你是开发、测试还是运维,Docker都是你的必备技能。

3297 学习 · 1896 问题

查看课程