2017-08-10 59 views
0

我正在尝试构建码头容器,该容器应该在容器的/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构建过程中?

+0

你在这里谈论哪些文件? –

+0

一般的任何文件。可执行,数据这并不重要。我想要完成一项非常简单的任务。容器启动后,我想执行我的启动脚本。这在容器中有些反模式,但我有要求在第一次容器启动时注入特定的工作流。 –

回答

0

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

二,docker模块已弃用,请使用docker_image构建图像。

您应该将文件放到build目录复印件(copysynchronize模块),例如:

/tmp/build 

然后创建Dockerfile,将他们从构建目录,并添加到您的图像。

该呼叫docker_image后:

docker_image: 
    path: /tmp/build 
    name: myimage 

最后启动你的容器:

docker_container: 
    image: myimage 
    name: mycontainer 
0

不确定是否是相关的,因为我不知道你的启动Ansible内容是干什么呢,但它可能值得看看Ansible Container项目。

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

您可使用Ansible的角色,而不是一个Dockerfile你的容器图像,本地协调它们,并将它们部署到生产Kubernetes或Red Hat OpenShift。