[英]How to push to the hub a docker container with two images made by docker-compose?
[英]How to push multiple docker images with docker-compose to docker hub?
I have several images and services in my docker-compose file, For creating a PHP, Apache, MySql, and PHPMyAdmin environment to run my website. 誰能幫助我如何在 Docker Hub 上推送我的所有圖像或使用我的網站代碼創建環境?
Dockerfile
FROM php:7.4-apache
RUN docker-php-ext-install mysqli
docker-compose.yml
services:
php:
build:
context: .
dockerfile: Dockerfile
ports:
- 80:80
volumes:
- ./src:/var/www/html/
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
phpmyadmin:
image: phpmyadmin
restart: always
ports:
- 8080:80
environment:
- PMA_ARBITRARY=1
index.php 和我在src文件夾中的所有網站代碼
了解可以推送到 Docker 集線器的內容非常有用。 Docker Hub will contain Docker images, but it can't host data content, the docker-compose.yml
file itself, or anything else that's not a Docker image. 您使用的兩個支持容器都使用標准 Docker Hub 映像。 因此,您需要使您的php
容器自包含,將其推送到 Docker 集線器,然后手動將docker-compose.yml
文件復制到您將運行它的地方。
刪除對本地系統的依賴。 除了復制 Docker 容器外,您通常不想復制應用程序源代碼。 在docker-compose.yml
文件中,刪除將本地系統源代碼掛載到容器中的volumes:
將其替換為將其復制到映像中的 Dockerfile 行:
COPY ./src/ /var/www/html/
這不會是一個實時的開發環境,沒關系。
命名您的 Docker 集線器圖像。 您可以在docker-compose.yml
文件中同時擁有build:
和image:
行。 如果你這樣做,它指定了構建圖像的名稱(而不是讓 Compose 選擇它)。 這應該給你留下:
services:
php:
build: . # with default Dockerfile
image: myname/myapp
ports:
- '80:80'
# no volumes:
db: # as above
phpmyadmin: # as above
構建和測試。 您應該可以進行此設置; docker-compose down -v
清理所有本地工件; docker-compose build
鏡像,然后docker-compose up
啟動它。 執行您需要的任何手動測試,以及您構建的任何自動化端到端測試。
推送圖片。
docker-compose push php
在其他地方運行它。 您需要docker-compose.yml
文件,但不需要任何其他工件。 當您在另一台機器上運行docker-compose up
,它會拉取本地沒有的任何圖像。 (如果是私有鏡像,可能需要docker login
。)
scp docker-compose.yml there:
ssh root@there docker-compose up -d
數據庫內容。 您的docker-compose.yml
文件沒有聲明volumes:
存儲數據庫數據; 這可能會導致重新啟動時數據丟失。 但是,您也不能將這些卷推送到 Docker 集線器。 您可以在本地系統上備份您的數據庫並在遠程系統上恢復它; 或者,您可以在應用程序啟動過程中運行數據庫遷移和播種腳本。 數據需要與代碼(圖像)和部署機制(Compose)分開處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.