繁体   English   中英

如何创建 docker-compose.yml 文件

[英]How To Create docker-compose.yml file

我是 docker 的初学者,所以我没有很好的知识,但我很想学习更多。 所以我希望这个社区可以指导我。 现在我有一个 Dockerfile。

# getting base image debian
 FROM debian
 RUN apt-get update && apt-get install -y sudo
 RUN apt-get update && apt-get install -y vsftpd
 RUN apt-get update && apt-get install -y ftp
 RUN apt-get install nano
 RUN sudo sed -i.$(date +%F) '/^#/d;/^$/d' /etc/vsftpd.conf

# Add configuration in /etc/vsftpd.conf
 RUN echo "write_enable=YES" >> /etc/vsftpd.conf
 RUN echo "chroot_local_user=YES" >> /etc/vsftpd.conf
 RUN echo "user_sub_token=\$USER" >> /etc/vsftpd.conf
 RUN echo "local_root=/home/\$USER/ftp" >> /etc/vsftpd.conf
 RUN echo "userlist_enable=YES" >> /etc/vsftpd.conf
 RUN echo "pasv_min_port=40000" >> /etc/vsftpd.conf
 RUN echo "pasv_max_port=50000" >> /etc/vsftpd.conf
 RUN echo "userlist_file=/etc/vsftpd.userlist" >> /etc/vsftpd.conf
 RUN echo "userlist_deny=NO" >> /etc/vsftpd.conf

# create new group "zanui"  
RUN groupadd zanui
#user "lal" with group lal
RUN useradd -G zanui --system --create-home --no-log-init lal
RUN echo "lal:123456" | chpasswd

RUN useradd -G zanui --system --create-home --no-log-init mausam
RUN echo "mausam:123456" | chpasswd

RUN echo "lal" | sudo tee -a /etc/vsftpd.userlist
RUN echo "mausam" | sudo tee -a /etc/vsftpd.userlist

RUN mkdir /home/lal/ftp
RUN chown nobody:nogroup /home/lal/ftp
RUN chmod a-w /home/lal/ftp

RUN mkdir /home/lal/ftp/files
RUN sudo chown lal:lal /home/lal/ftp/files

RUN mkdir /home/mausam/ftp
RUN chown nobody:nogroup /home/mausam/ftp
RUN chmod a-w /home/mausam/ftp

RUN mkdir /home/mausam/ftp/files
RUN sudo chown mausam:mausam /home/mausam/ftp/files

RUN apt-get update && apt-get install -y build-essential git libfuse-dev libcurl4-openssl-dev libxml2-dev mime-support automake libtool pkg-config libssl-dev
RUN git clone https://github.com/s3fs-fuse/s3fs-fuse
WORKDIR /s3fs-fuse
RUN ./autogen.sh && ./configure --prefix=/usr --with-openssl && make && make install
WORKDIR /../
ADD /conf/passwd-s3fs /etc/passwd-s3fs
RUN chmod 600 /etc/passwd-s3fs

# RUN s3fs bucket-name /home/lal/ftp/files

首先,我使用以下命令从 Dockerfile 构建映像:

docker build -t mydebiantest1:1.0 .

然后我使用以下命令使用此映像运行容器:

docker run --privileged -it mydebiantest1:1.0 bash

然后我将进入 Debian Linux bash 实例

root@c875e352e4e7:/# 

所以现在我想要的是当我运行命令时如何运行这些步骤:

docker-compose up

不知何故,我设法构建了 docker-compose.yml 文件,这似乎无法满足我的要求。

version: '3'
services:
  # The Application
  s3bucketftp:
    container_name: s3bucketftp
    image: s3bucketftp:1.0
    build:
      context: ./
      dockerfile: Dockerfile
      args:
        environment: development

您的Dockerfile没有CMDENTRYPOINT 如果启动容器以交互使用作为目标,则添加

CMD /bin/bash

您不需要为您的服务同时提供imagebuild上下文。 如果指定了image属性,则需要在本地或 docker 存储库中预先构建标记图像。

而是让 docker 根据提供的context build新图像。

更新后docker-compose.yaml看起来像,

version: '3'
services:
  s3bucketftp:
    container_name: s3bucketftp
    privileged: true
    tty: true
    build:
      context: ./
      args:
        environment: development

使用此撰写文件,您可以构建映像并启动容器(请注意,您已从与撰写文件相同的位置运行撰写命令)。

另请注意,由于指定了container_name因此无法扩展此服务。

docker-compose up -d

-d是将容器作为后台进程运行

并检查正在运行的容器,

docker-compose ps

一旦容器运行,就可以直接访问容器,而无需重做任何设置。

docker exec -it s3bucketftp /bin/bash

如果你想一次设置多个容器,你需要配置 docker-compose 文件,仅此而已。 您无需手动从映像构建容器。 docker-compose 在第一次构建和运行容器时会这样做。

创建一个名为“docker”的空文件夹,并在“docker”目录中创建一个名为“s3”的目录,将你的 docker 文件放在那里。 以终端类型在那里和那里移动:

touch docker-compose.yml
vim docker-compose.yml

把这个内容放在那里

version: '2'

services:
  # The Application
  s3bucketftp:
    container_name: s3bucketftp
    build:
      context: ./
      dockerfile: ./s3/Dockerfile
      args:
        environment: development

如果要在某个特定容器中打开终端,则应使用以下命令:

docker exec -it {containerName} /bin/bash

如果它不起作用,您应该尝试将可执行终端作为第二个参数,因此最终您进入容器的命令将是

docker exec -it {containerName} {pathToExecutableInContainer}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM