2017-08-10 65 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。