Docker部署先後端項目

本地(ubuntu19.04)安裝docker:php

sudo apt install docker.io

SSH鏈接服務器html

安裝Docker:前端

yum update
yum -y install docker-io

啓動dockervue

service docker start

開機自啓java

systemctl  enable docker.service

啓動自帶helloworld測試node

docker run hello-world 

關閉防火牆:mysql

systemctl disable firewalld

安裝java鏡像:linux

docker pull java:8u111 

 

服務器(CentOS7)docker安裝mysql鏡像

查看已安裝鏡像nginx

docker images

查找:(建議選擇與項目相應的版本,後面我改爲Mysql57了)git

docker search mysql

 

下載

docker pull docker.io./mysql
# 安裝5.7
docker pull mysql:5.7

 關閉原運行的Mariadb  沒有忽列(端口占用)

systemctl stop mariadb.service
smariadbystemctl disable .service

 運行容器

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/ var/lib/mysql -e MYSQL_ROOT_PASSWORD =123456 -d mysql鏡像的IMAGE ID
-p 3306:3306:將容器的 3306 端口映射到主機的 3306 端口。

-v $PWD/conf:/etc/mysql/conf.d:將主機當前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。

-v $PWD/logs:/logs:將主機當前目錄下的 logs 目錄掛載到容器的 /logs。

-v $PWD/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。

-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼

 

發現容器重名:重命名或者刪除

刪除:

從新運行:

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql鏡像的IMAGE ID

成功:

 

 進入容器:

docker exec -it mymysql bash
登入mysql:密碼爲上面建立容器是設置的密碼
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mike';
 添加遠程登陸用戶
CREATE USER 'mike'@'%' IDENTIFIED WITH mysql_native_password BY 'mike'; GRANT ALL PRIVILEGES ON *.* TO 'mike'@'%';

退出容器:

ctrl+p+q

便可本地鏈接將數據導入數據庫

 

服務器(CentOS7)docker安裝Nginx鏡像

 查找

docker search nginx

安裝:

docker pull docker.io/nginx

查看

 

 

運行容器:

docker run -p 8899:8899 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs  -d nginx
複製代碼
命令說明:

-p 80:80:將容器的80端口映射到主機的80端口 --name mynginx:將容器命名爲mynginx -v $PWD/www:/www:將主機中當前目錄下的www掛載到容器的/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:將主機中當前目錄下的nginx.conf掛載到容器的/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs:將主機中當前目錄下的logs掛載到容器的/wwwlogs
複製代碼

出現錯誤:

/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:235: starting container process caused "container init exited prematurely".
View Code

解決方法:暫時未知

 

另外一種啓動方式:

docker run -p 8899:8899 -d docker.io/nginx //將80端口映射爲8899,由於8080被tomcat用

查看容器啓動狀況 

docker ps

 成功:

 

 

 

 

本地機器安裝Git與nodejs:

參考:連接

建立鏡像倉庫

Docker Hub : https://cloud.docker.com

阿里的容器服務也能夠這裏採用Docker Hub來演示

 

 

部署Vue前端項目:

1.將項目拉到本地

git clone -b audit https://gitee.com/Tz_819827497/innovate-admin-vue.git

2.編寫docker文件:

FROM docker.io/nginx

MAINTAINER soldier <soldier_wyyx.com>

RUN rm /etc/nginx/conf.d/default.conf

ADD default.conf /etc/nginx/conf.d/

COPY dist/  /usr/share/nginx/html/
Dockerfile
server {
       listen       8080;
       server_name  localhost;
  
       #charset koi8-r;
       #access_log  /var/log/nginx/log/host.access.log  main;
   
       location / {
           root   /usr/share/nginx/html;
          index  index.html index.htm;
       }
 
    #error_page  404              /404.html;
  
     # redirect server error pages to the static page /50x.html
     #
      error_page   500 502 503 504  /50x.html;
     location = /50x.html {
        root   html;
     }
  
     # proxy the PHP scripts to Apache listening on 127.0.0.1:80
      #
      #location ~ \.php$ {
      #    proxy_pass   http://127.0.0.1;
     #}
  
      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
     #
     #location ~ \.php$ {
    #    root           html;
      #    fastcgi_pass   127.0.0.1:9000;
   #    fastcgi_index  index.php;
     #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}
 
    # deny access to .htaccess files, if Apache's document root
     # concurs with nginx's one
     #
      #location ~ /\.ht {
      #    deny  all;
      #}
  }
default.conf

 

下載依賴

npm install

代碼打包:

npm run build

 

 

 

打包鏡像:

docker build -t soldierdocker/innovate-admin-vue:v1.0.0 .

將鏡像推到倉庫:

docker push soldierdocker/innovate-admin-vue

拉取鏡像

docker pull soldierdocker/innovate-admin-vue:v1.0.0

安裝並運行鏡像 

docker run --name=innovate-admin-vue -p 8899:8899 -d soldierdocker/innovate-admin-vue:v1.0.0

其中8899是服務器上nginx運行的端口號

 

 

 

npm run build報錯

building for production...Killed  

原理

按照他人的說法是,服務器內存不夠用了,這樣就給他配置一個單獨的內存出來就解決了

解決方法

sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 sudo /sbin/mkswap /var/swap.1 sudo /sbin/swapon /var/swap.1

部署後端Springboot:

用mven將項目打包上傳到服務器

編寫Dockerfile

FROM java:8
 EXPOSE 8080
   
  VOLUME /tmp
   ADD innovate-admin.jar /app.jar
   RUN bash -c 'touch /app.jar'
  ENTRYPOINT ["java","-jar","/app.jar"]
Dockerfile

 

生成鏡像

docker build -t soldierdocker/innovate-admin:v1.0.0 .

推鏡像

docker push soldierdocker/innovate-admin

拉鏡像

docker pull soldierdocker/innovate-admin:v1.0.0

啓動容器:

docker run -d -p 8080:8080 soldierdocker/innovate-admin:v1.0.0

查看運行的容器日誌: 

sudo docker logs -f -t --tail 行數 容器名
sudo docker logs -f -t --tail n 容器名
相關文章
相關標籤/搜索