0

我正在尝试构建 docker 容器,它应该通过 ansible 在容器的 /etc/my_init.d 目录中包含启动脚本。我很难找到任何文档如何做到这一点。这是我的 yaml 文件的相关部分:

- name: Create container
  docker:
    name: myserver
    image: "{{ docker_repo }}/myserver:{{ server.version }}"
    state: started
    restart_policy: always
    docker_api_version: 1.18
    registry: "{{ docker_repo }}"
    username: "{{ registry_user }}"
    password: "{{ registry_password }}"
    links:
    - "mywebservices"
    ports:
    - "8000:8000"
    - "9899:9899"
    volumes:
    - "{{ myserver_home_dir }}/logs:/var/log/my_server"
    env:
      MY_ENVIRONMENT: "{{ my_environment }}"
  when: myserver_action == "create"
        or (myserver_action == "diff-create" and myserver.changed)
        or myserver_action == "update"

我应该在这里添加什么来告诉 ansible 在构建期间将我的文件放入容器的 /etc/my_init.d 中?

4

2 回答 2

0

不确定它是否相关,因为我不知道您的初创公司 Ansible 内容在做什么,但可能值得一看 Ansible Container 项目。

https://github.com/ansible/ansible-container

您可以使用 Ansible 角色而不是 Dockerfile 构建容器镜像,在本地编排它们,然后将它们部署到生产 Kubernetes 或 Red Hat OpenShift。

于 2017-08-14T15:18:10.717 回答
0

首先,你不能构建容器(你可以启动它),你构建图像。

其次,docker不推荐使用模块,用于docker_image构建图像。

您应该将文件复制到构建目录(带有copysynchronize模块),例如:

/tmp/build

然后创建Dockerfile将从构建目录中获取它们并添加到您的图像中。

在那次通话之后docker_image

docker_image:
  path: /tmp/build
  name: myimage

最后启动你的容器:

docker_container:
  image: myimage
  name: mycontainer
于 2017-08-11T06:22:03.853 回答