Docker。在docker-compose up之后在容器中创建目录并赋予读写权限。

3
如何在同一容器中创建另一个/tmp目录,并赋予它读写权限?

docker-compose.yml:

nginx:
    image: nginx
    ports:
      - 80:80
    volumes:
      - ./volumes/nginx/conf.d:/etc/nginx/conf.d
    command: nginx -g "daemon off;"
    networks:
      - network
3个回答

5

通过在Dockerfile中定义,您可以创建一个目录或执行任何其他操作。在与您的docker-compose.yml相同的目录中创建一个Dockerfile文件:

touch Dockerfile

在您的Dockerfile文件中添加以下行:

RUN mkdir /tmp2
RUN chmod 755 /tmp2

在docker-compose.yaml中添加构建信息:

nginx:
      image: nginx
      build: .
      ports:
        - 80:80
      volumes:
        - ./volumes/nginx/conf.d:/etc/nginx/conf.d
      command: nginx -g "daemon off;"
      networks:
        - network

2
请参考https://docs.docker.com/compose/gettingstarted/,了解如何在得到这个答案后继续操作。 - myuce

4

只需添加要创建的目录卷,它将在启动期间自动创建

nginx:
    image: nginx
    ports:
      - 80:80
    volumes:
      - ./volumes/nginx/conf.d:/etc/nginx/conf.d
      - ./volumes/hosted-direcotry/hosted-sub-direcotry:/etc/created-direcotry/created-sub-directory/
    command: nginx -g "daemon off;"
    networks:
      - network

我不能代表每个人说话,但我在这里是为了弄清楚如何创建非持久化目录。如果你挂载卷,它将在重启后保留。 - MrChadMWood
我不能代表每个人说话,但我在这里是为了弄清楚如何创建非持久化目录。如果你挂载卷,它将在重新启动后保持存在。 - undefined

3
如果您仅使用docker-compose而没有Dockerfile,则可以按以下方式操作:
您可以这样进入容器:
docker exec -ti $(docker ps --filter name='nginx' --format "{{ .ID }}")

然后,在容器内部,您可以运行:

mkdir /tmp2
chmod 755 /tmp2

谢谢你的回答,是的,我们没有使用Dockerfile,但我们可以在.yml文件的"command"行中自动完成吗? - Bulat Motygullin
从来没有做过,但似乎是可能的 https://github.com/docker-library/wordpress/issues/205 - danielarend

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接